多个 OR 运算符与 elem.value.match
Multiple OR operators with elem.value.match
我一直在编写一个javascript函数,如果该值与大约4个值之一匹配(在下面的示例中仅为3个),则返回true。问题是,当我只有两个值时,函数可以正常工作,但添加第三个值会破坏代码。
我对javascript很陌生,我想有更好的方法可以做到这一点吗?我尝试过搜索,但尚未找到任何内容。
任何帮助都非常感谢。
function isValid(elem, helperMsg){
var sn6 = /[sS][nN]6/;
var sn5 = /[sS][nN]5/;
var sn38 = /[sS][nN]38/;
if(elem.value.match(sn6 || sn5 || sn38)){
//do stuff
return true;
}else{
return false;
}
}
编辑:
这是我对数组的第二次尝试:
function isLocal(elem, helperMsg){
var validPostcodes=new Array();
validPostcodes[0]= /[wW][rR]12/;
validPostcodes[1]= /[cC][vV]35/;
validPostcodes[2]= /[sS][nN]99/;
validPostcodes[3]= /[sS][nN]6/;
validPostcodes[4]= /[sS][nN]5/;
validPostcodes[5]= /[sS][nN]38/;
validPostcodes[6]= /[oO][xX]29/;
validPostcodes[7]= /[oO][xX]28/;
var i = 0;
for (i = 0; i < validPostcodes.length; ++i) {
if(elem.value.match(validPostcodes[i])){
// do stuff
return true;
}else{
alert(helperMsg);
elem.focus();
return false;
}
}
}
a || b || c
是一个计算结果为布尔值的表达式。 这意味着您正在运行match(true)
或match(false)
。 您必须将其编写为:
match(a) || match(b) || match(c)
另一种选择是将它们存储在数组中并循环访问它。 这意味着如果模式数量增加,则不必更改模式列表以外的代码。 另一种方法,虽然仅限于这种情况,但可能是将模式更改为等效于将三个选项组合在一起的模式(未经测试,我对正则表达式有点生疏):
elem.value.match(/[sSnN][6|5|38]/)
基于数组的示例:
var patterns = [/../, /.../];
for (var i = 0; i < patterns.length; ++i) {
if (elem.value.match(patterns[i])) { return true; }
}
在实际代码中,我可能会将其格式化为:
function isValid(elem, helperMsg){
var patterns = [/../, /.../],
i = 0;
for (i = 0; i < patterns.length; ++i) {
if (elem.value.match(patterns[i])) {
return true;
}
}
}
不过这只是一种习惯,因为 JavaScript 将变量提升到其范围的顶部。 绝不需要声明这样的变量。
相关文章:
- 在ember/handlers中使用value和valueBinding有什么区别
- 需要url导航从DropDown Value onClick按钮传递url变量
- 用Javascript在下拉列表中选择VALUE选项
- C#asp.net mvc Set CheckBoxFor已检查的具有Model Value的属性
- HTML Value finding
- node.js是否具有'match()'方法如果是,语法是什么
- Javascript GetElementByID has no value
- 如何获取文本框组的值,并使用jquery将它们放入(key:Value)数组中
- .value返回字符串,直到我将其保存到变量
- Regex Replace仅适用于Last Match
- JavaScript check value
- 使用javascript和css选择器获取value属性的内容
- HTML SELECT-使用JavaScript按VALUE更改所选选项
- 如果URL为(value),则使用css类
- 如何格式化match()参数以定位电子邮件中的字符串
- 将php值传递给点击(getFunction(this.value))问题
- onchange选择get value并执行查询,然后在同一页面上显示结果
- 多个 OR 运算符与 elem.value.match
- 语法不理解value.match
- 在javascript中使用input.value.match进行验证