javascript - 正则表达式模式无法正常工作..但仅在 Extjs/Javascript 中

标签 javascript regex extjs extjs3

我构建了一个正则表达式模式来检查密码的强度:

(?=^.{8,15}$)((?=.*\d)(?=.*[A-Z])(?=.*[a-z])|(?=.*\d)(?=.*[^A-Za-z0-9])(?=.*[a-z])|(?=.*[^A-Za-z0-9])(?=.*[A-Z])(?=.*[a-z])|(?=.*\d)(?=.*[A-Z])(?=.*[^A-Za-z0-9]))^.*

它强制用户使用包含以下 4 个类别中至少 3 个字符的密码:

  1. at least 1 upper case character
  2. at least 1 lower case character
  3. at least 1 numerical character
  4. at least 1 special character / symbol

Note: It also enforces a min and max length {8,15}

该模式在服务器端 PHP 脚本上运行良好,我还使用多个 javascript Regex-tester-tools 对其进行了测试(例如 http://www.regular-expressions.info/javascriptexample.html )。到目前为止一切看起来都很完美...

但是,如果我在简单的 Extjs 文本字段验证器中使用它,则验证器仅在我使用所有 4 个类别时返回 TRUE。

validator: function (value) {

        var pattern = 
            '(?=^.{8,15}$)'+
            '((?=.*\d)(?=.*[A-Z])(?=.*[a-z])|' + 
            '(?=.*\d)(?=.*[^A-Za-z0-9])(?=.*[a-z])|' +
            '(?=.*[^A-Za-z0-9])(?=.*[A-Z])(?=.*[a-z])|' +
            '(?=.*\d)(?=.*[A-Z])(?=.*[^A-Za-z0-9]))^.*';
        if (value.match(pattern)) {
            return true;
        } else {
            return this.i18n.invalidPassword;
        }
    }

现在,我已经没有想法了......

最佳答案

您设置的模式不正确:

    var pattern = new RegExp(
        '(?=^.{8,15}$)'+
        '((?=.*\\d)(?=.*[A-Z])(?=.*[a-z])|' + 
        '(?=.*\\d)(?=.*[^A-Za-z0-9])(?=.*[a-z])|' +
        '(?=.*[^A-Za-z0-9])(?=.*[A-Z])(?=.*[a-z])|' +
        '(?=.*\\d)(?=.*[A-Z])(?=.*[^A-Za-z0-9]))^.*'
    );

请注意 \\ 而不是 \。如果您不这样做,当正则表达式代码到达时 \ 将消失。您也可以使用 native 正则表达式语法,但无法将其分解为多行。

编辑 - 具体来说,是正则表达式中 \d 出现之前的 \\。如果不使用双反斜杠,则正则表达式只会看到小写的“d”。

关于javascript - 正则表达式模式无法正常工作..但仅在 Extjs/Javascript 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17949388/

相关文章:

javascript - 单击子项时触发父项单击事件

javascript - 从react-toastify自定义 toastr

c# - 使用正则表达式规范化电话号码

javascript - Uncaught ReferenceError : google is not defined

extjs动态添加参数到商店的基本参数

javascript - 实习生功能测试 - 按顺序单击一组按钮

javascript - 如何将自定义 HTML 添加到 Mechanize 页面对象

regex - Matlab 中的正则表达式仅保留数组中的指定项

python-3.x - 用 % 按数字拆分 pandas 列

javascript - 在 EditorGridPanel 中显示组件而不单击