用于字符串匹配的Java正则表达式,应仅包含字母数字和“ - ”

时间:2012-11-05 11:57:08

标签: java regex

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

ADB123
ABC-D1
12ABCD
A-BCD1   

等。

4 个答案:

答案 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}]+表示

  • [ ]+表示任何一个或多个字符。
  • -在开始时表示-不是,而不是其他。
  • String文字中的
  • \\变为\,因为它是一个转义字符。
  • \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-]+$"