Javascript 允许数字或特殊字符的正则表达式

Javascript 允许数字或特殊字符的正则表达式,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限制您需要删除需要数字的先行

我有一个正则表达式允许字符,至少一个数字和特殊字符文本限制为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])

详细信息

  • ^
    -字符串的开头
  • (?=.[A-Za-z])
    -必须至少有一个ASCII字母
  • (?=.[\d$@.$!%*#?&])
    -类中必须至少有一个数字或任何一个特殊字符
  • [A-Za-z\d$@.!%*#&]{8,15}
    -字符串应仅由字母、数字和列出的特殊字符组成,从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类
  • 向前看类似于
    (?=…)

您的意思是它必须只需要一个数字或特殊字符(但不是两个),而其他字符都是字母?请给出一些有效/无效输入的示例。从你的描述中不清楚它是否应该考虑其他字母字符,或者它不应该是TBTW,你可以测试正则表达式。