Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从括号内获取整数_Javascript_Regex - Fatal编程技术网

Javascript 从括号内获取整数

Javascript 从括号内获取整数,javascript,regex,Javascript,Regex,我有一个字符串,试图从中获取整数。字符串如下所示: “(2)这是一个字符串” 我需要画出2。但它可以是任何数字,所以我尝试: var str = "(2) this is a string"; var patt = /\(\d\)/; var num = str.match(patt); 这不会返回正确的答案。我应该在()上进行拆分,还是有更好的regexp var str = "(2) this is a string"; var patt = /\((\d)\)/; var nu

我有一个字符串,试图从中获取整数。字符串如下所示:

“(2)这是一个字符串”

我需要画出
2
。但它可以是任何数字,所以我尝试:

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

 var num = str.match(patt);
这不会返回正确的答案。我应该在
()
上进行拆分,还是有更好的regexp

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

var num = str.match(patt)[1];
两件事。当您想从匹配的字符串中捕获段时,可以使用
()
来说明这一点。因此,我只是将
\d
包装在parens中以捕获它

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

这管用


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

使用这个。不管有多少个括号

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

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

这应该行得通

数字是否总是在单括号内?或者可能有双括号或者数字在外面的某个地方?没有。。。只有在字符串中包含表达式时,正则表达式才能采用上述语法。@FelixKling在Javascript中。上面的代码是正确的,在JavaScript中可以正常工作,这个问题被标记为。@SeanJohnson我编辑了回答。它是第一次被破坏:)这会返回多个数字吗?例如,10而不是2?@Verber现在是。添加了一个额外的+。这是否适用于多个数字?它可能是1,也可能是100。
(\d)
匹配并捕获单个数字。但是
(\d+)
将匹配一个或多个数字。
+
表示前面的一个或多个标记。还有一件事……有没有办法按照上面的回答得到类似(0.5)的值?或者那是另一种动物?它有点棘手。不要认为它是一个
0.5
十进制数字。把它想象成一根绳子。所以一些数字和一个有更多数字的点<代码>(\d+(\。\d+))。因此,在捕获组内部,我们定义了一个可选的子表达式。
表示其中的0或1。因此,
23
是匹配的,
23.45
,但不是
23。
 var str = "(2) this is a string";
var a =  /\([\d]*\)/g.exec(str)[0];
 var num =  a.substring(1, a.length-1);
 var str = "(2) this is a string";
var a =  /\([\d]*\)/g.exec(str)[0];
 var num =  a.substring(1, a.length-1);