2012-12-18 30 views
1

在Javascript中:JavaScript正则表达式匹配“123”出test123

我有一句“这是一个test123”,我需要以下单词测试组数字相匹配。

有没有办法做到这一点,而不是使用组?

这是我得到了什么,但我想,使这项工作,而无需使用一组(如果可能)

var str = str.match(/test.([0-9]{1,3})/) 

基本上我只需要说“通过‘测试’前任意数量组”代码

+5

你能解释一下为什么你希望不使用群组来做到这一点,以便我们可以提出一个替代方案? – Dancrumb

+0

为什么他们回来的时候很重要? – jbabey

+0

希望保持简单/单行代码。 –

回答

4

简单的单线(尚未群体,但简单):

"this is a test123".replace(/.*test(\d{1,3}).*/, "$1"); // "123" 

或者另一个版本match

("this is a test123".match(/test(\d{1,3})/) || []).pop(); // "123" 

还有一单行无正则表达式:

parseInt("this is a test123".split("test")[1], 10); // 123 
+0

这可以用.match()来完成吗? –

+0

@JoelGrannas是的。可以这样做,请参阅示例2. – VisioN

+0

最后一个示例仅适用于后面不再有个字符后的数字。 – Bergi

0

如果你不喜欢,你可以用2个简单的功能做在一行组:

str = str.match(/test[0-9]{1,3}/).toString().replace('test', ''); 
+0

请解释**为什么**可以解决问题。 – fuxia