繁体   English   中英

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

[英]Regular expression to allow either number or special characters

我有一个正则表达式允许字符,至少一个数字和特殊字符文本限制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]) - 必须至少有1个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
  • 我选择了字符类规范,因此它们适合特殊字符char类。
  • 前瞻就像(?=...)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM