我有一个正则表达式来验证密码是否包含数字、小写和大写字符。
下面这个效果很好。但是当我在 jQuery 验证中使用它时:
txtPassword: {
required: true,
regex: Regex
}
Regex = (?=^.{8,16}$)(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%^&*()_+}{":;/'?/>.<,])(?!.*\s).*$
但问题是单引号'
在 JavaScript 中。有人可以帮我解决这个问题吗?谢谢。
此正则表达式中有几件事需要修复:
- 在您的密码前瞻检查中,您有一个没有句点的
一个量词。因此它总是会失败该检查。例如,对于
号码检查,你应该有
(?=.*\d)
代替(?=.\d)
.
- 您不能使用正斜杠转义字符
/
,而不是你
使用反斜杠\
。你用 a 错误地转义了它
最后一个字符类中的正斜杠。
- 字符内唯一的特殊字符或元字符
类是右括号(
]
)、反斜杠 (\
)、插入符号 (^
)
和连字符 (-
)。因此,这不是由于单引号引起的。罪魁祸首是你的插入符号,它没有被逃脱。
尝试这个正则表达式,其中插入符号^
被转义而不是引用'
:
(?=^.{8,16}$)(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%\^&*()_+}{":;'?/>.<,])(?!.*\s)^.*$
我假设您的问题是指使用正则表达式来验证密码:
- 至少 1 个数字
- 至少 1 个小写字符
- 至少 1 个大写字符
- 集合中至少有 1 个特殊字符
!@#$%^&*()_+}{":;'?/>.<,
- 长度介于 8 到 16 个字符之间
如果这是真的,请使用明确的要求更新您的问题。
使用正则表达式
基于 jQuery 的代码。摆弄这个here http://jsfiddle.net/kashkns/K3ZrM/:
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');
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)