2013-03-15 87 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)); 
}