我有一些我正在尝试完成。我想用AJAX/xml
构建的数组。使用.match正则表达式阵列
array[/word0/, /word1/, /word2/]
,并把这个成可以在一个.match()
使用的形式:
result = string.match(array)
我一直在使用一个for循环,并通过使用string.match(array[i])
无济于事阵列步进尝试。
有没有简单的方法来做到这一点?
我有一些我正在尝试完成。我想用AJAX/xml
构建的数组。使用.match正则表达式阵列
array[/word0/, /word1/, /word2/]
,并把这个成可以在一个.match()
使用的形式:
result = string.match(array)
我一直在使用一个for循环,并通过使用string.match(array[i])
无济于事阵列步进尝试。
有没有简单的方法来做到这一点?
编辑:您可能有语法问题。以下是无效的语法:
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);
谢谢先生。我确实有一个语法问题。我有一个}切断访问原始数组。尽管花了几个小时,你帮我追踪了下来。也感谢其他人的建议。干杯 – Hewhoshallnotbenamed 2013-03-16 02:51:52
要初始化数组,使用
var array = [/word0/, /word1/, /word2/];
然后你可以使用
str.match(array[i])
如果你的问题是在“AJAX/XML”的传输,那么你就需要建立正规表达式客户端与new RegExp(somestring)
其中somestring
可能为例如"word0"
:您不能在XML中嵌入正则表达式文字。
对不起,我想我应该更精确。我只是给了删节的代码。 – Hewhoshallnotbenamed 2013-03-15 22:50:38
你的做法很好。下面是我实现的:
var regexes = [/^def/, /^abc/],
testString = 'abcdef',
numRegexes = regexes.length;
for(var x=0;x<numRegexes;x++) {
alert(regexes[x].test(testString));
}
'string.match(/ WORD0 |字1 |字词2/)' – elclanrs 2013-03-15 22:48:30
你得到了什么错误?我认为你必须比“无济于事”更具描述性。你所做的是一个有效的解决方案,所以我的猜测是你的问题在别处(请参阅我的答案以获得更具体的猜测)。 – benekastah 2013-03-15 22:56:53
我实际上没有收到任何错误。我理解使用你的例子的原理,但是,如果我在.join之前转储数组的内容,我会得到“word1”,“word2”,“word3”。在.join后我得到这个: /(?:)/ – Hewhoshallnotbenamed 2013-03-16 00:31:12