我想针对 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 来使示例可读。
最佳答案
使用正则表达式的测试函数。
这里有更多关于正则表达式的信息。 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()
}
关于javascript - 针对 javascript 中的多个正则表达式测试字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10921321/