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

标签 javascript regex

我想针对 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/

相关文章:

javascript - UI5 是否支持其库中的当前 ecmascript?

Javascript 替换为 RegExp 重复本身?

ruby 删除 ctrl-H 字符

javascript - 用正则表达式替换 Markdown 字符

java - RTF Java 解析器

javascript - 单击按钮时动态创建的 select2 不会被删除

javascript - 动态 JavaScript 图像 SRC 路径替换

javascript - 如何在 javascript 中为背景位置创建变量?

regex - notepad++ 关键字仅在行首时

python - 使用 "r"和 re.sub 中的变量