Why is this regex allowing a caret?
regexr.com 3ars8 http:/ /
1 | ^(?=.*[0-9])(?=.*[A-z])[0-9A-z-]{17}$ |
匹配的"17"alphanumeric字符,字符不允许,必须包括至少一个与至少一个号码"
这将正确的匹配:
1 | ABCDF31U100027743 |
它和正确匹配:
1 | AB$DF31U100027743 |
(和几乎任何其他非alphanumeric炭)
但问题是:
1 | AB^DF31U100027743 |
因为您的字符类
实际上,这是一个常见的错误。你应该用
下面是Expresso的可视化,显示了
所以,这个regex(带有
1 | ^(?=.*[0-9])(?=.*[a-z])[0-9a-z-]{17}$ |
在我看来,使用
regex uses ASCII printable characters from the space to the tilde range.
每当我们使用
您允许a-z(大写字母"A"到小写字母"Z")。您不必说您使用的是什么regex包,但不一定清楚a-z和a-z是连续的;中间可能还有其他字符。试试这个:
1 | ^(?=.*[0-9])(?=.*[A-Za-z])[0-9A-Za-z-]{17}$ |
这似乎符合你对我在雷杰帕尔的标准。