我需要在java中添加正则表达式来测试字符串是否只包含字母数字(带或不带“ - ”)。 例如:
ADB123
ABC-D1
12ABCD
A-BCD1
等。
答案 0 :(得分:7)
你可以尝试
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}]+
表示
[ ]+
表示任何一个或多个字符。-
在开始时表示-
不是,而不是其他。\\
变为\
,因为它是一个转义字符。\p{Alnum}
是预定义的字母和数字字符列表。有关详细信息,请参阅Pattern的文档。
答案 1 :(得分:2)
试试这个正则表达式:
/^[A-Z0-9-]*$/
您可以像这样运行:
str.matches("[A-Z0-9-]*"); // Returns a Boolean
答案 2 :(得分:2)
您正在寻找的正则表达式是:
"^[A-Z0-9-]+$"
答案 3 :(得分:2)
你应该试试这个
"^[0-9a-zA-Z-]+$"