如何提取两个字符之间的字符串?

问题描述:

这是我的字符串:如何提取两个字符之间的字符串?

[email protected] 
[email protected] 
[email protected] 

我想要做的就是提取180,从这些字符串360和480。

我试过这个RegEx _(.*)@但没机会。

+2

也许这样:'_(\ d *)@' - 它总是一个数字字符串? – sideroxylon

+0

是的。但是这个也包括_和@个字符。如果你也可以摆脱他们,为什么你不发布答案? :) – scaryguy

你只是想要捕获组:

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

你几乎得到了它

_(\d{3})@ 

你需要做的数字匹配,否则该字符串将还得到因为其他下划线的选择。

Ofcourse你的对手将是\1

试试这个

var str = "[email protected]"; 
 
    var matches = str.match(/_\[email protected]/).map(function(value){return value.substring(1,value.length-1);}); 
 
document.body.innerHTML += JSON.stringify(matches,0,4);

试试这个:

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

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

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

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

我希望它有帮助。