针对 JavaScript 中的多个正则表达式测试字符串
test string against multiple regexes in javascript
我想针对 20 个左右的正则表达式测试给定的字符串。在 Javascript 中执行此操作的干净方法是什么?我更关心干净的代码和可读性而不是效率(但我也不希望它超级慢)。
现在我有:
if (href.indexOf('apple.com') > -1 ||
href.indexOf('google.com') > -1 ||
href.indexOf('yahoo.com') > -1 ||
href.indexOf('facebook.com') > -1) {
performDarkMagic()
}
但随着名单的增长,它将开始看起来有点混乱。也许我可以创建一个正则表达式数组并执行类似 _.any() 的内容并在每个表达式上应用 regex.test?
编辑:要匹配的字符串/正则表达式可能会变得更加复杂,我只是使用简单的 URL 使示例可读。
对正则表达式使用 test 函数。
有关正则表达式的更多信息,请单击此处。https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/RegExp
var re = /((google)|(facebook)|(yahoo)|(apple))'.com/;
re.test( str ); // returns true or false;
测试用例。
现场演示在这里:http://jsfiddle.net/rkzXP/1/
var func = function( str ){
var re = /((google)|(facebook)|(yahoo)|(apple))'.com/;
return re.test( str );
};
test("test for valid values", function() {
equal( func("google.com"), true);
equal( func("facebook.com"), true);
equal( func("apple.com"), true);
});
test("test for invalid values", function() {
equal( func("googl.com"), false);
equal( func("faceook.com"), false);
equal( func("apple"), false);
});
因此,您可以按如下方式重写代码。
var re = /((google)|(facebook)|(yahoo)|(apple))'.com/;
if( re.test(str) ){
performDarkMagic()
}
var patterns = ['apple.com', 'google.com', 'yahoo.com', 'facebook.com', ...]
var callFunc = false;
patterns.forEach(function(item){
if(href.indexOf(item) > -1){
callFunc = true;
break;
}
});
if(callFunc) {
performDarkMagic();
}
是的,构建数组并使用 .any()
或 .some()
就可以了,尤其是当值超过 4 个时:
if (["apple","google","yahoo","facebook"].some(host => href.includes(`${host}.com`)) {
performLightMagic();
}
然而我在那里看不到正则表达式,只有字符串;所以你可以简化使用 regex.test()
来:
if (/apple'.com|google'.com|yahoo'.com|facebook'.com/.test(href)) { performLightMagic(); }
甚至
if (/(apple|google|yahoo|facebook)'.com/.test(href)) { performLightMagic(); }
您可以将每个放在数组中,然后循环访问每个。
我会怎么做:把它分解成一个函数。将每个正则表达式放在一个数组中,遍历它们并返回 true 第一次索引> -1。如果到达循环的末尾,则返回 false。
遍历正则表达式数组,然后执行以下操作:
result=result AND (result_of_regex);
next;
循环返回结果后
相关文章:
- 从 JavaScript 到 Java 的正则表达式测试
- 使用正则表达式测试字符串中的特定ASCII字符
- 正则表达式测试
- 针对 JavaScript 中的多个正则表达式测试字符串
- 正则表达式测试算法返回 false
- jQuery 正则表达式测试在 .each 错误中
- LxWxH 的正则表达式测试模式
- JavaScript正则表达式测试字符串是否包含特定单词(带变量)
- 如何在使用变量时防止正则表达式测试切换
- 特定正则表达式测试
- 正则表达式测试方法中的“g”如何交替工作
- 正则表达式测试不能正常工作
- 对数字列表进行正则表达式测试
- 正则表达式测试函数不返回相同的引号
- Javascript数字正则表达式测试失败-无法找出原因
- 可以在正则表达式测试器中创建函数,但不能在应用程序中创建
- Javascript正则表达式测试
- Js正则表达式测试除字符串
- Jquery正则表达式测试字符串中的确切单词
- 以重音开头的正则表达式测试