我有这两个字符串......
var str1 = "this is (1) test";
var str2 = "this is (2) test";
并希望编写一个RegEx来提取"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)"
答案 0 :(得分:5)
喜欢这个
的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美元。
捕获组会降低性能。如果你不需要的话 要调用的匹配子字符串,更喜欢非捕获括号 (见下文)。
答案 1 :(得分:0)
尝试:
/[a-zA-Z0-9\s]+\((\d+)\)[a-zA-Z0-9\s]+/
这将捕获括号内的一个或多个数字。
编辑:在示例中,您将看到替换字段只包含数字,而不是括号 - 这是因为捕获组$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);
答案 2 :(得分: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"