2009-01-07 83 views
1

我有這個樣的文字,這是從類名檢索的HTML元素:幫助與JavaScript的正則表達式

rich-message err-test1 erroractive 
rich-message err-test2 erroractive 
rich-message erroractive err-test1 
err-test2 rich-message erroractive 

我想匹配「測試1」 /「測試2」的數據在每個這些例子。我目前使用下面的正則表達式,它匹配「err-test1」類型的單詞。我無法弄清楚如何將它限制在連字符( - )之後的數據中。

/err-(\S*)/ig 

頭撞傷了這堵牆。

回答

3

從我正在閱讀的內容中,您的代碼已經正常工作。

Regex.exec()返回成功結果數組。

數組中的第一個元素(索引0)返回整個字符串,之後所有的()封閉元素都被推送到這個數組中。

var string = 'rich-message err-test1 erroractive'; 
var regex = new RegExp('err-(\S*)', 'ig'); 
var result = regex.exec(string); 

alert(result[0]) --> returns err-test1 
alert(result[1]) --> returns test1 
+0

血腥地獄,我是個白癡。我一直在使用.match()而不是.exec()。謝謝! – Geuis 2009-01-07 19:17:22

0

你可以嘗試'err - ([^ \ n \ r] *)' - 但是你確定這是正則表達式嗎?你是否在使用整個結果,而不僅僅是第一次捕獲?

+0

我唯一需要的是「err-」之後的文本。我想在一個正則表達式中乾淨地完成匹配,而不是匹配整個單詞,然後使用額外的方法剝離「err-」。當然,現在可以節省時間,但仍不能解決問題。 – Geuis 2009-01-07 19:16:21

0

之後的東西 - 應該在結果數組中。第一項是所有匹配的文本(例如「err-test1」),而下一項是來自捕獲括號的匹配項(例如「test1」)。

myregex = /err-(\S*)/ig; 
mymatch = myregex.exec("data with matches in it"); 
testnum = mymatch[1]; 

這是reference site