【问题标题】:jquery password validation not working as expectedjquery密码验证没有按预期工作
【发布时间】:2017-02-04 18:35:12
【问题描述】:

我有以下验证码:

function validPassword(password)
{
    var regex = /^(?=.*[A-Za-z])(?=.*\d)(?=.*[$@$!%*#-?&])[A-Za-z\d$@$!%*#-?&]{8,}$/;
    var valid = regex.test(password);
    return valid;
}

要求是: 最小长度 8 个字符,1 个特殊字符,1 个字母字符,最少 1 个数字。

我不熟悉正则表达式,但是,验证不适用于12345678a - 由于某种原因检测特殊字符不起作用.. 有任何想法吗?谢谢

【问题讨论】:

  • 您需要转义特殊字符而不是具有语义含义,在这种情况下 - 在特殊字符部分(可能是其他字符)
  • 更改中间的破折号:regex101.com/r/gE6yM7/2
  • 另外,为什么要加倍$?你从哪里得到这个正则表达式?我看到很多问题都带有相同的双 $

标签: jquery regex validation passwords


【解决方案1】:

问题是在字符类中间存在未转义的连字符,充当前后字符之间的范围。

你可以使用这个正则表达式来修复它:

/^(?=.*[A-Za-z])(?=.*\d)(?=.*[$@$!%*#?&-])[A-Za-z\d$@$!%*#?&-]{8,}$/

RegEx Demo

注意在前瞻和匹配中如何将连字符放在字符类的末尾。

您也可以在开头放置未转义的连字符。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-25
    • 2022-10-15
    • 2014-07-15
    • 1970-01-01
    • 2018-03-17
    • 2019-07-13
    相关资源
    最近更新 更多