Javascript 允许特殊字符的正则表达式
我正在使用一个在线正则表达式检查器来检查我的正则表达式,它将由javascript使用,例如(工作但只减少正则表达式示例) 我的正则表达式是Javascript 允许特殊字符的正则表达式,javascript,regex,Javascript,Regex,我正在使用一个在线正则表达式检查器来检查我的正则表达式,它将由javascript使用,例如(工作但只减少正则表达式示例) 我的正则表达式是 (?=.*[A-Z])(?=.*[0-9])[a-zA-Z0-9].{5,19} 如果把它切成小块,就意味着 (?=.*[A-Z]) - Must include an Upper case char (?=.*[0-9]) - Must include a numeric [a-zA-Z0-9. ] - Can include any lowe
(?=.*[A-Z])(?=.*[0-9])[a-zA-Z0-9].{5,19}
如果把它切成小块,就意味着
(?=.*[A-Z]) - Must include an Upper case char
(?=.*[0-9]) - Must include a numeric
[a-zA-Z0-9. ] - Can include any lower or upper case char, or Numeric, a period or space
. - Matching previous
{5,19} - the string must be 6-20 characters in length
但是,这仍然允许使用特殊字符,例如
我没有使用\d表示小数,因为我认为[0-9]在这方面应该更严格,并删除了句点和空格,以确定这是否是原因,但没有用
允许使用特殊字符哪里出了问题?您需要删除最后一个
,您认为它与上一个匹配,它实际上与除换行符以外的任何字符都匹配,所以这就是问题所在!正在通过
所以(?=.[A-Z])(?=.[0-9])[A-zA-Z0-9]。{5,19}
应该是(?=.[A-Z])(?=.[0-9])[A-zA-Z0-9]{5,19}
我还想提一下\d
和[0-9]
之间没有任何区别
已更新-以下内容将修复您在正则表达式中看到的问题-(?=.[A-Z])(?=.[0-9])[A-zA-Z0-9\.\s]{6,20}$
- 添加了
(以允许使用。)\。
- 添加了
(允许空白字符)\s
- 将
更改为{5,19}
,以确保正确的字符匹配{6,20}$
如果要在regex101中测试此版本的正则表达式请删除“匹配”前一行中的
,该
匹配除新行之外的任何单个字符,新行与匹配代码>-试试这个-(?=.[A-Z])(?=.[0-9])[A-zA-Z0-9]{5,19}
。而且\d与[0-9]完全相同
匹配任何字符,而不是“previous”。如果您实际使用的是regex101.com:,它会告诉您:“.{5,19}匹配任何字符(行终止符除外)”为快速回复干杯@MarkWalters,因为你只是第一个,所以请随意发布分数的答案。再次感谢。不知道我从哪里得到这个点子的@MikeMcCaughan-我都没注意到。我猜有“使用它”和“正确使用它”。谢谢:)实际上,\d
和[0-9]
之间是有区别的<代码>\d
速度较慢,因为它还考虑了其他语言中的数字。这是一个很好的解释。@juanlu实际上刚刚读了这个-。JavaScript中不支持Unicode正则表达式匹配,因此\d相当于JS中的[0-9]。有趣的是,在测试了更多内容后,您的答案似乎只检查了前5个字符。A1CDE匹配,但A1CDE也匹配!,虽然是A1C!DE失败,因为它只匹配前5个..@MarkWalters您完全正确,JS似乎不支持它。很高兴知道!你有没有办法在那里输入链接描述?
(?=.*[A-Z]) - Must include an Upper case char
(?=.*[0-9]) - Must include a numeric
[a-zA-Z0-9. ] - Can include any lower or upper case char, or Numeric, a period or space
. - Matching previous
{5,19} - the string must be 6-20 characters in length