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);