文字列に英数字のみが含まれているかどうか(「-」の有無にかかわらず)をテストするには、Javaに正規表現を追加する必要があります。元:
ADB123
ABC-D1
12ABCD
A-BCD1
等
あなたが試すことができます
for (String s : "ADB123,ABC-D1,12ABCD,A-BCD1,abcd12,a.b.c,12£".split(",")) {
boolean ok = s.matches("[-\\p{Alnum}]+");
System.out.println(s + " is ok: " + ok);
}
版画
ADB123 is ok: true
ABC-D1 is ok: true
12ABCD is ok: true
A-BCD1 is ok: true
abcd12 is ok: true
a.b.c is ok: false
12£ is ok: false
正規表現の[-\\p{Alnum}]+
意味
[ ]+
いずれかの文字の 1 つまたは複数を意味します。-
最初のは-
、not と not を意味し、他の何かではありません。\\
文字列リテラル\
では、エスケープ文字と同じように変換されます。\p{Alnum}
英数字の定義済みリストです。詳細については、パターンのドキュメントを参照してください。
この正規表現を試してみてください。
/^[A-Z0-9-]*$/
次のように実行できます。
str.matches("[A-Z0-9-]*"); // Returns a Boolean
探している正規表現は次のとおりです。
"^[A-Z0-9-]+$"
これを試してみてください
"^[0-9a-zA-Z-]+$"