2010-03-03 112 views
4
string = 'Hello 1234_ world 4567_ trap 456'; 

我需要捕獲所有數字後跟下劃線。以下代碼將會執行。Javascript的正則表達式

string.match(/(\d+?)(_)/gi); 

但是我測試了下面的代碼,它的工作除了下劃線也被捕獲。

(\d+)_ 

所以我決定給下劃線其自己的捕獲組這樣

(\ d +)(_)

但沒有奏效。我得到了帶下劃線的數字。我不想要下劃線。

+0

?代碼的其餘部分是什麼? – 2010-03-03 20:24:00

+0

我正在使用這個網站http://regex.larsolavtorvik.com/#js – 2010-03-03 20:24:40

回答

4

匹配方法返回一個字符串,其中包含匹配的字符,而不管它們是否是(捕獲或不捕獲)組的一部分。

(?=_)組是前瞻性的。前視是零寬度匹配,因此它不匹配任何字符。它匹配空字符串,但前提是後面的字符是下劃線。

這些團體在這裏並不重要。當您使用零寬度匹配時,結果將不包含任何額外的字符。

+0

這就是'/ \ d +(?= _)/ g'。不知道爲什麼不寫。 – Kobi 2010-03-03 20:33:42

+0

Kobi:這已經是問題的一部分了,但他把它編輯了出來。 – 2010-03-03 20:36:10

+0

太奇怪了。 – Kobi 2010-03-03 20:38:02

0

你如何使用正則表達式嘗試

var regex = /(\d+?)(_)/