2013-03-15 83 views
0

我有一些我正在尝试完成。我想用AJAX/xml构建的数组。使用.match正则表达式阵列

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

,并把这个成可以在一个.match()使用的形式:

result = string.match(array) 

我一直在使用一个for循环,并通过使用string.match(array[i])无济于事阵列步进尝试。

有没有简单的方法来做到这一点?

+2

'string.match(/ WORD0 |字1 |字词2/)' – elclanrs 2013-03-15 22:48:30

+0

你得到了什么错误?我认为你必须比“无济于事”更具描述性。你所做的是一个有效的解决方案,所以我的猜测是你的问题在别处(请参阅我的答案以获得更具体的猜测)。 – benekastah 2013-03-15 22:56:53

+0

我实际上没有收到任何错误。我理解使用你的例子的原理,但是,如果我在.join之前转储数组的内容,我会得到“word1”,“word2”,“word3”。在.join后我得到这个: /(?:)/ – Hewhoshallnotbenamed 2013-03-16 00:31:12

回答

1

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

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

像这样的东西修复它:

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

原来的答复:

的Javascript RegExp s已做到这一点。您正在寻找:

var regexp = /word0|word1|word2/; 

假设您的匹配列表回来以正确的格式,你可以做到这一点,像这样:

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

谢谢先生。我确实有一个语法问题。我有一个}切断访问原始数组。尽管花了几个小时,你帮我追踪了下来。也感谢其他人的建议。干杯 – Hewhoshallnotbenamed 2013-03-16 02:51:52

0

要初始化数组,使用

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

然后你可以使用

str.match(array[i]) 

如果你的问题是在“AJAX/XML”的传输,那么你就需要建立正规表达式客户端与new RegExp(somestring)其中somestring可能为例如"word0":您不能在XML中嵌入正则表达式文字

+0

对不起,我想我应该更精确。我只是给了删节的代码。 – Hewhoshallnotbenamed 2013-03-15 22:50:38

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)); 
}