我有一些我正在嘗試完成。我想用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