验证带有Javascript的PIN-SyntaxError:意外令牌)

时间:2018-09-28 18:22:57

标签: javascript regex

这些是指令:ATM机允许使用4位或6位PIN码,而PIN码只能包含4位或6位数字。如果该函数传递了有效的PIN字符串,则返回true,否则返回false。

这是我的代码:

function validatePIN (pin) {
  //return true or false
  let regexPIN4 = /^\d{4}$/;
  let regexPIN6 = /^\d{6}$/;
  
  if (regexPIN4.test(pin)|regexPIN6.test(pin)){
      return True;
};

这是错误:

/home/codewarrior/index.js:47
});
 ^

SyntaxError: Unexpected token )
    at createScript (vm.js:80:10)
    at Object.runInThisContext (vm.js:139:10)
    at Module._compile (module.js:616:28)
    at Object.Module._extensions..js (module.js:663:10)
    at Module.load (module.js:565:32)
    at tryModuleLoad (module.js:505:12)
    at Function.Module._load (module.js:497:3)
    at Module.require (module.js:596:17)
    at require (internal/module.js:11:18)
    at [eval]:1:1

我查看了StackOverflow条目:Regex validate PIN code JS

2 个答案:

答案 0 :(得分:2)

  • 您错过了第二public/index.html
  • 对于逻辑或,您需要两个}
  • 在javascript中,没有||,只有True

这应该是正确的代码:

true

您甚至可以像这样简化它:

function validatePIN (pin) {
  let regexPIN4 = /^\d{4}$/;
  let regexPIN6 = /^\d{6}$/;

  return regexPIN4.test(pin) || regexPIN6.test(pin);
}

答案 1 :(得分:0)

除语法错误外,这是一个演示,演示仅用一个只允许4或6位数字的正则表达式完成任务。

function checkPin(pin) {
  // regex to check for pins with 4 or 6 digits
  return /^\d{4}(\d{2})?$/.test(pin);
}

console.log(checkPin(1234)); // true
console.log(checkPin(123456)); // true
console.log(checkPin(12)); // false - not exactly 4 or 6 digits
console.log(checkPin('12h34')); // false - a non-digit character

关于您的错误:

  • OR中的逻辑JavaScript运算符的写法类似于:|| |
  • 您错过了}来关闭if语句。
  • 请注意,true不是TrueJavaScript是区分大小写的。

希望我进一步推动了你。