我是棱角分明的新手。我创建了一个登录屏幕。我需要验证我的密码。它应该包含-'$@£!%*#?&'
中的一个特殊字符以及至少一个字母和数字。截至目前,它接受所有特殊字符,没有任何限制。我有以下代码
if (vm.newpassword_details.password.search("^(?=.*?[A-Za-z])(?=.*?[0-9])(?=.*?[$@£!%*#?&]).{8,}$")) {
var msg = "Password should contain one special character from -'$@£!%*#?&' and at least one letter and number";
alert(msg);
}
答案 0 :(得分:1)
请注意,您当前的正则表达式强制执行 4种类型的限制:
(?=.*?[A-Za-z])
),(?=.*?[0-9])
),(?=.*?[$@£!%*#?&])
).{8,}
) .
中的.{8,}
可以匹配除了换行符之外的任何字符。
如果您打算限制.
并且仅允许用户从您的集中键入字符,请从中创建超集并将其与RegExp#test
一起使用:
if (!/^(?=.*?[A-Za-z])(?=.*?[0-9])(?=.*?[$@£!%*#?&])[A-Za-z0-9$@£!%*#?&]{8,}$/.test(vm.newpassword_details.password)) { /* Error ! */ }
请参阅regex demo