我试图写一个正则表达式,它返回一个字符串是括号之间。例如:我想获得位于字符串"("和")"之间的字符串

I expect five hundred dollars ($500).

将返回

$500

发现正则表达式在Javascript中获得两个字符串之间的字符串

我不知道如何在regexp中使用'(',')'。


当前回答

简单的解决方案

注意:这个解决方案可以用于这个问题中只有一个“(”和“)”的字符串。

("I expect five hundred dollars ($500).").match(/\((.*)\)/).pop();

在线演示(jsfiddle)

其他回答

匹配括号内的子字符串,不包括您可能使用的任何内括号

\(([^()]*)\)

模式。参见正则表达式演示。

在JavaScript中,使用它像

var rx = /\(([^()]*)\)/g;

模式的细节

\(- a (char ([^()]*) -捕获组1:匹配除(和)以外的任何0或更多字符的否定字符类 \) - a) char。

要获得整个匹配,获取Group 0值,如果需要括号内的文本,则获取Group 1值。

最新的JavaScript代码演示(使用matchAll):

const strs = ["I expect five hundred dollars ($500).", "I expect.. ":(500美元); Const rx = /\(([^()]*)\)/g; str。forEach(x => { const matches =[…x.matchAll(rx)]; console.log(Array.from(matches, m => m[0]));//所有完全匹配的值 console.log(Array.from(matches, m => m[1]));//所有组1的值 });

遗留JavaScript代码演示(兼容ES5):

var strs = ["I expect five hundred dollars ($500).", "I expect.. ":(500美元); Var rx = /\(([^()]*)\)/g; For (var i=0;i<str .length;i++) { [我]console.log (str); //获取组1值: Var res=[], m; 而(m = rx.exec (str[我])){ res.push (m [1]); } console.log("Group 1: ", res); //获取整个值 console.log("全部匹配:",strs[i].match(rx)); }

选择:

var str = "I expect five hundred dollars ($500) ($1).";
str.match(/\(.*?\)/g).map(x => x.replace(/[()]/g, ""));
→ (2) ["$500", "$1"]

如果需要,可以用方括号或花括号代替方括号

简单的解决方案

注意:这个解决方案可以用于这个问题中只有一个“(”和“)”的字符串。

("I expect five hundred dollars ($500).").match(/\((.*)\)/).pop();

在线演示(jsfiddle)

let str = "括号前(括号内)括号后".replace(/.*\(|\). "* / g,”); console.log(str) //括号内

将Mr_Green的答案移植为函数式编程风格,以避免使用临时全局变量。

var matches = string2.split('[')
  .filter(function(v){ return v.indexOf(']') > -1})
  .map( function(value) { 
    return value.split(']')[0]
  })