JavaScript全局捕获中的正则表达式失败
Regex in javascript global catch failed
var r = new RegExp('^[0-9]*$');
function validatePIN (pin) {
//return true or false
if(r.test(pin) && pin.length == 4 || pin.length == 6){
return true;
}else{
return false;
}
}
console.log(validatePin(3627i1));
上面的正则表达式有什么问题?我希望在这种情况下true
。
没有什么大问题,但这些条件将无法正确评估:
r.test(pin) && pin.length == 4 || pin.length == 6
因为它实际上意味着由于&&
的运算符优先级高于||
(r.test(pin) && pin.length == 4) || pin.length == 6
。
您需要将条件括在括号中:
r.test(pin) && (pin.length == 4 || pin.length == 6)
顺便说一句,你甚至不需要在之后检查长度,因为你可以在正则表达式本身中做到这一点:
var r = /^[0-9]{4}(?:[0-9]{2})?$/
现在,此正则表达式将匹配 4 位数字或 6 位数字。
validatePin
与validatePIN
不同,3627i1
与'3627i1'
不同。
因此,请确保您调用了正确的函数并向其传递了正确的参数:
console.log(validatePIN('3627i1'));
代码中的语法错误,
var r = new RegExp('^[0-9]*$');
function validatePIN (pin) {
//return true or false
if(r.test(pin) && pin.length == 4 || pin.length == 6){
return true;
}else{
return false;
}
}
console.log(validatePIN("3627i1")); //call valid function, parameter = string
相关文章:
- Javascript正则表达式失败
- 如何查找正则表达式的哪个部分/组失败
- Javascript正则表达式失败,但不确定原因
- JavaScript:当存在单引号时,用于替换双花引号的正则表达式失败
- 为什么当我在正则表达式中放置空格键时,我的 Javascript test() 函数失败了
- Javascript正则表达式在IE中失败,但在Chrome和Edge中工作
- 使用 match 匹配某些字符串,正则表达式失败
- 字母数字 JavaScript 正则表达式失败
- 正则表达式替换失败
- 英国排除了邮政编码正则表达式失败
- 重复相同的字符时,正则表达式将失败
- JavaScript 正则表达式 test() 在 Jasmine 测试期间在变量中时正则表达式失败
- 在 JavaScript 正则表达式上失败
- JavaScript全局捕获中的正则表达式失败
- Javascript正则表达式失败(循环?)
- 正则表达式失败
- 我可以在HTML文本区域中突出显示多个在Javascript中正则表达式失败的单词吗?
- Javascript正则表达式失败
- 当单词以丹麦字符æ,ø,å开头时,Javascript正则表达式失败
- 电子邮件的 JavaScript 正则表达式失败.为什么