为什么不([A-Z]|[0-9])[\\.a-zA-Z0-9_-]{0,}$ match abc123 in Java?



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

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

规则:字母,连字符和破折号的组合,还必须包含大写字母或数字。

当我尝试字符串abc123时,它与JavaScript正则表达式测试器上的预期匹配。

但是在Java代码中失败了:

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

有人知道原因吗?这和我的正则字符串有关吗?

关键是您不匹配完整的字符串,而只匹配部分"123"。相反,String.matches仅在完整字符串匹配时才返回true。

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

最新更新