2016-03-22 150 views

回答

2

你只是想要捕獲組:

var str = '[email protected]'; 
 
var substr = str.match(/_(\d*)@/); 
 
if (substr) { 
 
    substr = substr[1]; 
 
    console.log(substr); 
 
} 
 

 
//outputs 180

+0

如果不匹配,它也會拋出一個'TypeError'(不能讀取'null'的屬性1)。 – Marty

+0

參見編輯 - 如果懷疑字符串將包含substr,只需先檢查匹配項,然後選擇捕獲組。 – sideroxylon

1

你幾乎得到了它

_(\d{3})@ 

你需要做的數字匹配,否則該字符串將還得到因爲其他下劃線的選擇。

Ofcourse你的對手將是\1

0

試試這個:

(? < = (?!。*))(。*)(?= @)

使用回顧後(?< =)和向前看(?=),使 「_」 和 「@」 不包括在內在比賽中。

(?!。*)得到「_」的最後一次出現。

(。*)匹配最後一次出現「_」和「@」之間的所有內容。

我希望它有幫助。

相關問題