我正在尝试使用以下功能来验证引脚
function validate(num){
num.length === 4 || num.length === 6 ? {
regex = /\d+/,
regex:test(num)
}
:
false
}
但是我遇到此错误,但我不知道为什么
/home/runner/index.js:3
regex = /\d+/,
^^^^^^^^^^^^^
SyntaxError: Invalid shorthand property initializer
您不能将?:
运算符与语句一起使用;仅表达式。
但是,无需在此处为您的正则表达式定义变量。您可以直接在正则表达式文字上调用.test
:
function validate(num){
return num.length === 4 || num.length === 6 ? /\d+/.test(num) : false
}
甚至更好,只需使用&&
运算符,在此在逻辑上等效:
function validate(num){
return (num.length === 4 || num.length === 6) && /\d+/.test(num);
}
正如其他人指出的那样,您不能将语句放入条件表达式(或任何其他表达式)中,而只能放入表达式。
您收到的错误是因为它认为您正在尝试编写对象文字,但是您不能在对象文字中进行赋值。
您可以使用普通的if
语句:
if (num.length == 4 || num.length == 6) {
var regex = /\d+/;
return regex.test(num);
} else {
return false;
}
但是根本不需要条件,您可以在正则表达式本身中测试长度。
function validate(num) {
return /^\d{4}$|^\d{6}$/.test(num);
}
虽然我在这里不推荐这样做,但是请务必牢记可以在表达式上下文中使用function expression。此操作始终执行,例如用于回调,并且相同的概念可以转移到其他位置。]
这里是原始文件的最小转换(保留了许多原始文件的错误和其他功能,除了引起解析错误的地方),显示了函数表达式。此特定情况也称为“ IIFE”。
function validate(num){
return num.length === 4 || num.length === 6
? (function() {
let regex = /\d+/;
return regex.test(num);
})()
: false;
}