使用.match的正则表达式数组

时间:2013-03-15 22:44:43

标签: javascript jquery

我有一些我想要完成的事情。

我想使用AJAX / xml构建一个数组。

array[/word0/, /word1/, /word2/]

并将其放入可在.match()中使用的表单:

result = string.match(array)

我尝试使用for循环并使用string.match(array[i])单步执行数组无效。

有一种简单的方法吗?

3 个答案:

答案 0 :(得分:1)

http://jsfiddle.net/KALPh/

你的方法很好。这是我的实施:

var regexes = [/^def/, /^abc/],
    testString = 'abcdef',
    numRegexes = regexes.length;

for(var x=0;x<numRegexes;x++) {
    alert(regexes[x].test(testString));
}

答案 1 :(得分:1)

编辑:您可能遇到语法问题。以下是无效的语法:

array[/word0/, /word1/, /word2/]

像这样的东西修复了它:

var regexps = [/word0/, /word1/, /word2/];

原始回答:

Javascript RegExp已经这样做了。你在寻找:

var regexp = /word0|word1|word2/;

假设您的匹配列表以正确的格式返回,您可以这样做:

var words = ["word0", "word1", "word2"];
var regexp = new Regexp(words.join("|"));
str.match(regexp);

答案 2 :(得分:0)

要初始化数组,请使用

var array = [/word0/, /word1/, /word2/];

然后你可以使用

str.match(array[i])

如果您的问题是“AJAX / xml”中的传输,那么您需要使用new RegExp(somestring)构建正则表达式客户端,其中somestring可能是"word0":你不能在XML中嵌入正则表达式 literal