Javascript 允许数字或特殊字符的正则表达式
我有一个正则表达式允许字符,至少一个数字和特殊字符文本限制为8到15Javascript 允许数字或特殊字符的正则表达式,javascript,regex,Javascript,Regex,我有一个正则表达式允许字符,至少一个数字和特殊字符文本限制为8到15 function validatePassword(password) { var re = /^(?=.*[A-Za-z])(?=.*\d)(?=.*[$@.$!%*#?&])[A-Za-z\d$@.$!%*#?&]{8,15}$/i; return re.test(password); } 现在我需要更改此正则表达式以接受一个数字或一个特殊字符以及相同的8到15限制您需要删除需要数字的先行
function validatePassword(password) {
var re = /^(?=.*[A-Za-z])(?=.*\d)(?=.*[$@.$!%*#?&])[A-Za-z\d$@.$!%*#?&]{8,15}$/i;
return re.test(password);
}
现在我需要更改此正则表达式以接受一个数字或一个特殊字符以及相同的8到15限制您需要删除需要数字的先行项,并将
\d
移动到需要特殊字符的先行项:
var re = /^(?=.*[A-Za-z])(?=.*[\d$@.!%*#?&])[A-Za-z\d$@.!%*#?&]{8,15}$/;
^^
如果不需要至少一个字母,请删除(?=.*[A-Za-z])
详细信息:
-字符串的开头^
-必须至少有一个ASCII字母(?=.[A-Za-z])
-类中必须至少有一个数字或任何一个特殊字符(?=.[\d$@.$!%*#?&])
-字符串应仅由字母、数字和列出的特殊字符组成,从8到15次出现[A-Za-z\d$@.!%*#&]{8,15}
-字符串结束$
a-zA-Z
,就不需要/i
不区分大小写的修饰符
此外,无需在同一个字符类中重复
$
。您只需统一数字和特殊字符的外观:
function validatePassword(password) {
var re = /^(?=.*[A-Za-z])(?=.*[$@.$!%*#?&0-9])[A-Za-z\d$@.$!%*#?&]{8,15}$/i;
return re.test(password);
}
说明:
- 数字可以指定为
或[0-9]
\d
- 我选择了character类规范,因此它们适合特殊的character类
- 向前看类似于
(?=…)