正则表达式没有方法测试

时间:2016-01-09 07:23:13

标签: javascript regex

ATM机允许 4或6位 PIN码,PIN码不能包含完全 4位数或正好6位数

如果函数传递了有效的PIN字符串,请返回true,否则返回false

E.g:

validatePIN("1234") === true
validatePIN("12345") === false
validatePIN("a234") === false

为什么我的代码不起作用?

var r = new RegExp('^\\d+$');
function validatePIN (pin) {
  if(pin.test(r) && pin.length == 4 || pin.length == 6){
    return true;
  }else{
    return false;
  }
}

3 个答案:

答案 0 :(得分:3)

你可以在一个正则表达式中完成所有工作..

var r = new RegExp('^(\\d{4}|\\d{6})$');

所以条件是,

function validatePIN (pin) {
 return r.test(pin);
}

答案 1 :(得分:2)

x && y || z

被解释为:

(x && y) || z

如果长度 6 ,它将返回true,即使它 仅数字。要解决此问题,您可以添加括号:

x && (y || z)

答案 2 :(得分:1)

你应该在正则表达式实例上调用test方法,而不是在字符串输入上调用:

select distinct(memberid) from membermetas 
where memberMeta = 'kilo' 
and memberMetaValue >= 90 
and memberMeta = 'boy' 
and memberMetaValue <= 175

还要注意逻辑运算符的优先级。