【问题标题】:Get string inside parentheses, removing parentheses, with regex使用正则表达式获取括号内的字符串,删除括号
【发布时间】:2013-09-01 15:12:17
【问题描述】:

我有这两个字符串...

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

【问题讨论】:

标签: javascript regex string


【解决方案1】:

这样

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 美元。

捕获组会降低性能。如果您不需要 要调用的匹配子字符串,更喜欢非捕获括号 (见下文)。

【讨论】:

    【解决方案2】:

    试试这个

        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)
    【解决方案3】:

    试试:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-14
      • 1970-01-01
      • 1970-01-01
      • 2015-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多