针对 JavaScript 中的多个正则表达式测试字符串

2024-03-28

我想针对 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 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/ 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()
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

针对 JavaScript 中的多个正则表达式测试字符串 的相关文章

随机推荐