假设我有一个包含字符串的变量,我想测试它是否匹配我的正则表达式,我想知道当它返回 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/