为什么不([A-Z] | [0-9])[\\。a-zA-Z0-9 _-] {0,} $在Java中匹配abc123?

时间:2011-08-29 07:33:31

标签: java regex

我正在尝试为以下规则创建正则表达式。

RegEx:([A-Z]|[0-9])[\\.a-zA-Z0-9_-]{0,}$

规则:字母,连字符和短划线的组合,也必须包含大写字母或数字。

当我尝试字符串abc123时,它会按照JavaScript Regular Expression Tester上的预期进行匹配。

但它在Java代码中失败了:

str.matches("([A-Z]|[0-9])[\\.a-zA-Z0-9_-]{0,}$")

有人知道原因吗?这与我的reg ex字符串有关吗?

1 个答案:

答案 0 :(得分:5)

关键是你不匹配完整的字符串而只匹配部分“123”。如果完整的字符串匹配,则相反String.matches仅产生true。

注意:您的正则表达式与您的描述不相似。它将 start 的字符串与大写字母数字匹配。