在这个正则表达式中有几件事需要修复:
- 在您对密码的前瞻检查中,您有一个没有量词的句点。因此,它将始终无法通过该检查。例如,对于号码检查,您应该
(?=.*\d)
使用(?=.\d)
.
- 您不使用正斜杠转义字符
/
,而是使用反斜杠\
。您在最后一个字符类中使用正斜杠错误地转义了它。
- 字符类中唯一的特殊字符或元字符是右括号 (
]
)、反斜杠 ( \
)、插入符号 ( ^
) 和连字符 ( -
)。因此,这不是由于单引号。罪魁祸首是你没有逃脱的插入符号。
试试这个正则表达式,其中插入符号^
而不是引号被转义'
:
(?=^.{8,16}$)(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%\^&*()_+}{":;'?/>.<,])(?!.*\s)^.*$
我假设你的问题,你的意思是一个正则表达式来验证密码:
- 至少 1 个号码
- 至少 1 个小写字符
- 至少 1 个大写字符
- 集合中至少有 1 个特殊字符
!@#$%^&*()_+}{":;'?/>.<,
- 长度在 8 到 16 个字符之间
如果这是真的,请用明确的要求更新您的问题。
在RegexPal中使用正则表达式
基于 jQuery 的代码。在这里摆弄这个:
var regex = /(?=^.{8,16}$)(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%\^&*()_+}{":;'?/>.<,])(?!.*\s)^.*$/g;
//if(regex.test($('#txtPassword').val())){ alert('Match'); }else{alert('No Match')}
if (regex.test('P@sSw0rD')) {
alert('Match');
} else {
alert('No Match');
}