-1

我需要在java中添加正则表达式来测试字符串是否只包含字母数字(带或不带“-”)。前任:

ADB123
ABC-D1
12ABCD
A-BCD1   

等等

4

4 回答 4

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的文档。

于 2012-11-05T12:02:31.080 回答
2

试试这个正则表达式:

/^[A-Z0-9-]*$/

你可以像这样运行它:

str.matches("[A-Z0-9-]*"); // Returns a Boolean
于 2012-11-05T11:58:21.297 回答
2

您正在寻找的正则表达式是:

"^[A-Z0-9-]+$"
于 2012-11-05T11:59:27.630 回答
2

你应该试试这个

"^[0-9a-zA-Z-]+$"
于 2012-11-05T12:00:09.410 回答