0

正規表現は初めてです...

文字列にのみ一致する正規表現について問題があります。

0〜9、az、AZ、スペース、コンマ、および一重引用符

上記の式に属さない文字が文字列に含まれている場合、その文字列は無効です。

それは次のようなものですか?

Pattern p = Pattern.compile("\\s[a-zA-Z0-9,']");
Matcher m = p.matcher("to be or not");
boolean b = m.lookingAt();

ありがとうございました!

4

3 に答える 3

2

文字クラス内にスペースを含め、複数の文字を許可する必要があります。

Pattern p = Pattern.compile("[\\sa-zA-Z0-9,']*");
Matcher m = p.matcher("to be or not");
boolean b = m.matches();
于 2012-05-24T13:10:47.783 に答える
2

境界を追加する式を修正します。

Pattern p = Pattern.compile("^\\s[a-zA-Z0-9,']+$");

これで、文字列に列挙された記号のみが含まれている場合にのみm.find()、これが返されることを確認できます。trueところで、最初に入れたのは間違い\\sですか?これは、文字列が単一の空白から開始する必要があることを意味します。これが要件でない場合は、これを削除してください。

于 2012-05-24T13:12:27.793 に答える
1

\ sは、スペース文字だけでなく、任意の空白文字(改行、タブ、改行など)に一致することに注意してください。

あなたはおそらくこのようなものが欲しいでしょう:

"^ [a-zA-Z0-9、'] + $"

于 2012-05-24T13:30:51.653 に答える