我需要在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}]+
意思
[ ]+
指一个或多个任何字符。-
一开始就意味着-
不是,也不是别的东西。\\
在字符串文字中变成就像\
它是一个转义字符一样。\p{Alnum}
是一个预定义的字母和数字字符列表。有关更多详细信息,请参阅Pattern的文档。
试试这个正则表达式:
/^[A-Z0-9-]*$/
你可以像这样运行它:
str.matches("[A-Z0-9-]*"); // Returns a Boolean
您正在寻找的正则表达式是:
"^[A-Z0-9-]+$"
你应该试试这个
"^[0-9a-zA-Z-]+$"