使用正则表达式获取括号内的字符串,去除括号。

4
我有这两个字符串...
var str1 = "this is (1) test";
var str2 = "this is (2) test";

我想要编写一个正则表达式,从括号里提取内容,例如"1""2",生成如下的字符串。

var str3 = "12";

现在我有一个正则表达式,它也返回括号...

var re = (/\((.*?)\)/g);

var str1 = str1.match(/\((.*?)\)/g);
var str2 = str2.match(/\((.*?)\)/g);

var str3 = str1+str2; //produces "(1)(2)"

3个回答

5

Like this

Javascript

var str1 = "this is (1) test",
    str2 = "this is (2) test",
    str3 = str1.match(/\((.*?)\)/)[1] + str2.match(/\((.*?)\)/)[1];

alert(str3);

jsfiddle 上查看。

请参阅MDN RegExp

(x) 匹配 x 并记住匹配。这些括号称为捕获括号。

例如,/(foo)/ 可以匹配 "foo bar" 中的 'foo' 并记住它。匹配的子字符串可以从结果数组的元素1、...、[n] 或预定义的 RegExp 对象的属性 $1、...、$9 中召回。

捕获组会带来性能损失。如果您不需要召回匹配的子字符串,请使用非捕获括号(见下文)。


0

尝试:

/[a-zA-Z0-9\s]+\((\d+)\)[a-zA-Z0-9\s]+/

这将捕获括号内的一个或多个数字。

例如:http://regexr.com?365uj

编辑:在示例中,您将看到替换字段仅包含数字,而不是括号--这是因为捕获组$1仅捕获数字本身。

编辑2:

尝试类似于以下内容:

var str1 = "this is (1) test";
var str2 = "this is (2) test";

var re = /[a-zA-Z0-9\s]+\((\d+)\)[a-zA-Z0-9\s]+/;

str1 = str1.replace(re, "$1");
str2 = str2.replace(re, "$1");

console.log(str1, str2);

0

试一下这个

    var re = (/\((.*?)\)/g);

    var str1 = str1.match(/\((.*?)\)/g);
    var new_str1=str1.substr(1,str1.length-1);
    var str2 = str2.match(/\((.*?)\)/g);
    var new_str2=str2.substr(1,str2.length-1);

    var str3 = new_str1+new_str2; //produces "12"

应该是 str2.substr(1,str2.length-2) - Eric Kim

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接