1

我有一个字符串,我试图在其中获取整数。字符串看起来像:

"(2) This is a string"

我需要抓住它2。但它可以是任何数字,所以我尝试了:

 var str = "(2) this is a string";
 var patt = /\(\d\)/;

 var num = str.match(patt);

这不会返回正确的答案。我应该对 进行拆分()还是有更好的正则表达式?

4

4 回答 4

3
var str = "(2) this is a string";
var patt = /\((\d)\)/;

var num = str.match(patt)[1];

2 件事。当您想从匹配的字符串中捕获一个段时,您()需要注意这一点。所以我只是把它包\d在括号里来捕捉它。

其次,为了访问捕获的段,您必须深入到返回的数组中。该match方法将返回一个数组,其中第一项是整个匹配的字符串,第二项是任何匹配的捕获组。因此用于[1]获取第一个捕获组(数组中的第二项)

于 2012-10-19T20:30:24.253 回答
0
var str = "(2) this is a string";
var patt = /\((\d+)\)/;
alert(str.match(patt)[1]);

这行得通!

为什么有效。因为在 (()) 混乱中还有一个捕获,它填充了匹配数组中的 [1] 元素。

于 2012-10-19T20:30:55.837 回答
0

用这个。不管多少括号

var str = "(2) this is a string";
var patt = /\(\d\)/;

var num = str.match(patt)[0].replace("(", "").replace(")","")

这应该工作

于 2012-10-19T20:34:06.780 回答
0
 var str = "(2) this is a string";
var a =  /\([\d]*\)/g.exec(str)[0];
 var num =  a.substring(1, a.length-1);
于 2012-10-19T20:38:25.953 回答