2012-03-20 15 views
1

私たちには何かを含むことができるデータベース列があります。 Unicode、数字、単語などJavaの単語、数字、およびいくつかの記号を除いてすべてを除外するにはどうすればよいですか?

しかし、私たちはそのデータを外部のサービスに送る必要があり、受け入れるものについては非常に厳格です。基本的に英語のみ、単語、数字など

このサービスの要件を変更することはできませんので、送信する前にユーザーが送信するものをフィルタリングする必要があります。

私のRegExスキルは弱いです。ここでは、必要なものです:

文字[a-zA-Z]の 番号[0-9] 次の記号:@#$%^ & *()-_ = +;:!」、/。 ?\

それだけです。もちろん、どのような組み合わせでもかまいません。私たちはそこに列挙されていないものが何もないことを確認したいだけです。

Javaでこのフィルタを構築する方法についての助けがあれば、大歓迎です。

ところで、私は同じRegExパターンがJavaScriptで動作すると仮定していますか?

EDIT

これは私が(Edmastermind29を使用して)している例です。

public static void main(String[] args) { 

    String pattern = "^[[email protected]#$%^&*()-_=+;:',./?\\]"; 
    String text = "Hello, I need everything in this string except the { or }"; 

    Pattern p = Pattern.compile(pattern); 
    Matcher m = p.matcher(text); 

    // here, I need everything but the {}. 
    // so I should have: Hello, I need everything in this string except the or 

} 

OK、私はその文字列をエスケープする方法を考え出しました。しかし、どのようにフィルタリングされていないものはすべて手に入れますか?

+2

'[-ZA-Z0-9 @の#$%^&*()\ -_ = +;:!」、/ \。? \] * '? –

+0

なぜ "java"タグを追加しましたか? javascript <> java – pushistic

+0

これはJavaで解決する必要がある問題です。しかし、私は後でJavascriptでそれをやっていきます。私は同じ正規表現のパターンを両方で使用できるかどうか疑問に思っていましたが、Javaソリューションがより重要です。 – cbmeeks

答えて

3

をエスケープする必要があり

注意。 与えられた例ではソリューションは次のようになります。

public static void main(String[] args) { 
    String pattern = "[[email protected]#$%^&*()-_=+;:',./?\\ ]*"; 
    String text = "Hello, I need everything in this string except the { or }"; 

    Pattern p = Pattern.compile(pattern); 
    Matcher m = p.matcher(text); 
    StringBuilder sb = new StringBuilder(); 
    while(m.find()) 
    { 
    sb.append(m.group()); 
    } 
    String result = sb.toString(); 
    System.out.println("Result: '" + result + "'"); 
} 
+0

ところで:予想通りの結果を得るためには、パターンに「スペース」文字を含める必要がありました。 – gumble42

+0

これは完全に動作するようです。あなたのコードを修正したので私はあなたに答えを与えました。 :-) – cbmeeks

2

[[email protected]#$%^&*()\-_=+;:',./?\\]*

投稿に述べたように、大文字と小文字の任意の数、任意の桁数、および任意の数次の記号[email protected]#$%^&*()-_=+;:',./?\を受け入れます。

+1

あなたは '\'をエスケープする必要があります – pushistic

+0

@pushistic done –

+0

+1パターンに感謝します。 – cbmeeks

1

Javascriptでは、正規表現/^[[email protected]#$%^&*()-_=+;:',./?\\]$/と入力に一致するonSubmit関数を作成するだけで、フォームがfalseを返す場合はフォームを送信できないようにすることができます。あなたはあなたがそれぞれ一致するサブシーケンスの反復と文字列を連結する必要がある「\」文字

関連する問題