javascript - 我的字符串与正则表达式 Javascript 不匹配的原因

标签 javascript regex passwords exec match

假设我有一个包含字符串的变量,我想测试它是否匹配我的正则表达式,我想知道当它返回 false 时违反了哪个规则,有没有办法可以得到它?

这是我测试的代码

var regex = /^(?=.*\d)[a-zA-Z\d]{6,}$/;
var word = "dudeE1123123";

if(word.match(regex)){
    console.log("matched");
}else{
    console.log("did not match");
    console.log("i want to know why it did not match");
}

我想要这个的原因是我想通知我的用户,例如:“你没有包含大写字符”或类似的东西

最佳答案

正则表达式应该匹配一些文本字符串。如果不匹配,它不会保留有关失败发生之前匹配内容的任何信息。因此,您无法获得有关导致正则表达式失败的原因的任何详细信息。

您可以在 else block 中添加一些测试,以查看输入字符串是否没有数字或字母。这样的事情应该足够了:

var regex = /^(?=.*\d)[a-zA-Z\d]{6,}$/;
var word = "###";

if(word.match(regex)){
    console.log("matched");
}else{
    console.log("did not match");
    var msg = "";
    if (!/[a-zA-Z]/.test(word)) {                 // Are there any letters?
    	msg += "Word has no ASCII letters. ";
    }
    if (!/\d/.test(word)) {                       // Are there any digits?
    	msg += "Word has no digit. ";
    }
    if (word.length < 6) {                        // Is the length 6+?
        msg += "Word is less than 6 chars long. ";
    }
    console.log(msg);
}

关于javascript - 我的字符串与正则表达式 Javascript 不匹配的原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35718202/

相关文章:

javascript - 获取 td JavaScript 中隐藏的输入值

javascript - 页面刷新后输入的值(css)消失了

javascript - 在 javascript 中使用 Regex 验证 LRC 文件

mysql - 从数据库中的表中选择的正则表达式

php - 非静态方法 PDO::quote() 不能静态调用,

javascript - 让数据等待 JavaScript 上变量的声明完成?

javascript - 使用 Javascript 或 JQuery 更改 JSON 值

regex - 懒惰,贪婪,还是什么?寻找权威的正则表达式引用

passwords - 仅在 rar 存档上测试密码

r - 使用 RGoogleDocs 时如何防止密码泄露?