2016-03-22 105 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

试试这个:

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

使用回顾后(?< =)和向前看(?=),使 “_” 和 “@” 不包括在内在比赛中。

(?!。*)得到“_”的最后一次出现。

(。*)匹配最后一次出现“_”和“@”之间的所有内容。

我希望它有帮助。

相关问题