返回值 - 从 javascript 函数返回 true 或 false
return value - Returning true or false from javascript function
我正在对函数中的字符串进行正则表达式检查:
function ValidateZipCodeString(listOfZipCodes) {
var regex = /^([, ]*'d{5})+[, ]*$/,
matches = regex.exec(listOfZipCodes);
if (regex.exec(listOfZipCodes) === null) {
console.log('validation failed');
return false;
} else {
console.log('validation passed');
return true;
}
}
正则表达式正确检测有效/无效的邮政编码列表。
我用这个调用函数:
console.log('zip code: ' + listOfZipCodes);
if (ValidateZipCodeString(listOfZipCodes)) {
$tr.find('label#lblCoverageEditError').text('There is invalid text in the list of zip codes. Only 5-digit zip codes allowed.').show();
} else {
console.log('validate function returned true');
}
问题是,当验证函数中的控制台输出显示"验证失败"时,上述 if/else 转到 else 子句。所以我一定不能正确地调用该函数。
做我想做的事情的正确方法是什么?
您的函数可以大大简化为:
function ValidateZipCodeString(listOfZipCodes) {
var regex = /^([, ]*'d{5})+[, ]*$/;
if (regex.test(listOfZipCodes)) {
console.log('validation passed');
return true;
} else {
console.log('validation failed');
return false;
}
}
。或:
function ValidateZipCodeString(listOfZipCodes) {
var regex = /^([, ]*'d{5})+[, ]*$/;
return regex.test(listOfZipCodes);
}
。甚至只是:
function ValidateZipCodeString(listOfZipCodes) {
return /^([, ]*'d{5})+[, ]*$/.test(listOfZipCodes);
}
。但真正的问题(正如Teemu指出的那样)不在于你的功能,而在于它的使用。你的函数回答了这个问题,"这是一个有效的邮政编码字符串吗?",但你对它的使用是说,"如果我的函数说它是无效的,就说这是无效的。
实际上,当验证失败时,您的验证函数不会返回true
。您只是错误地检查了值,它应该是:
if (!ValidateZipCodeString(listOfZipCodes)) {
$tr.find('label#lblCoverageEditError').text('There is invalid text in the list of zip codes. Only 5-digit zip codes allowed.').show();
} else {
console.log('validate function returned true');
}
其他人正确地指出,你只是以错误的顺序进行了测试。但是,更重要的是,您的正则表达式不正确,因为它将例如为"1234567890"返回 true。
这里有一个建议:
function ValidateZipCodeString(listOfZipCodes) {
return /^'d{5}('s*,'s*'d{5})*$/.test(listOfZipCodes);
}
相关文章:
- JavaScript-切换“;全部检查”;复选框true/false
- true==false以某种方式计算为true
- Javascript似乎在说true ==false
- JavaScript onkeydown, return true,false
- 从异步函数返回true/false以用于同步if()
- 函数返回undefined而不是true/false
- 为什么true/true是1,true/false是无穷大,false/true是0,false/false是NaN
- 检查对象数组是否包含布尔值true/false
- 函数:根据字符串中是否存在子字符串返回 True/False
- 如何将 ng-show 与控制器中返回 true/false 的函数一起使用
- 在input.checked=true/false _without_ jQuery上触发一个事件
- jQuery javascript未正确返回true/false
- 如何从嵌套的jquery回调函数中返回true/false
- 如何在骨干模型属性中设置布尔值true/false
- 如何使用angular或javascript在基于true/false返回的html中显示值
- 基于true/false变量显示/隐藏进度条
- Node.js在返回true/false时停止函数
- 是否可以将true/false值传递给ajax函数
- 根据Webix中的复选框值编辑true/false
- Meteor:设置车把变量true/false