我正在尝试为以下规则创建正则表达式。
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字符串有关吗?
答案 0 :(得分:5)
关键是你不匹配完整的字符串而只匹配部分“123”。如果完整的字符串匹配,则相反String.matches
仅产生true。
注意:您的正则表达式与您的描述不相似。它将 start 的字符串与大写字母数字匹配。