正则expression式来获得Javascript中的括号之间的string

我想写一个正则expression式返回一个括号之间的string。 例如:我想获取string之间的string“(”和“)”

I expect five hundred dollars ($500). 

会返回

 $500 

find正则expression式来获取Javascript中两个string之间的string

但我是新的正则expression式。 我不知道如何在正则expression式中使用'(',')'

您需要创build一组转义(带括号)括号(与圆括号匹配)和一组创build捕获组的正则括号:

 var regExp = /\(([^)]+)\)/; var matches = regExp.exec("I expect five hundred dollars ($500)."); //matches[1] contains the value between the parentheses console.log(matches[1]); 

分解:

  • \( :匹配开头括号
  • ( :开始捕获组
  • [^)]+ :匹配一个或多个非)字符
  • ) :结束捕获组
  • \) :匹配右括号

这是RegExplained的一个视觉解释

尝试string操作:

 var txt = "I expect five hundred dollars ($500). and new brackets ($600)"; var newTxt = txt.split('('); for (var i = 1; i < newTxt.length; i++) { console.log(newTxt[i].split(')')[0]); } 

或正则expression式( 这是比较慢

 var txt = "I expect five hundred dollars ($500). and new brackets ($600)"; var regExp = /\(([^)]+)\)/g; var matches = txt.match(regExp); for (var i = 0; i < matches.length; i++) { var str = matches[i]; console.log(str.substring(1, str.length - 1)); } 

对于货币符号后的数字: \(.+\s*\d+\s*\)应该工作

\(.+\)括号内的任何内容

为了避免使用临时的全局variables,将Mr_Green的答案移植到函数式编程风格上。

 var matches = string2.split('[') .filter(function(v){ return v.indexOf(']') > -1}) .map( function(value) { return value.split(']')[0] }) 
 var str = "I expect five hundred dollars ($500) ($1)."; var rex = /\$\d+(?=\))/; alert(rex.exec(str)); 

将匹配以$开头的第一个数字,然后是“)”。 ')'不会成为比赛的一部分。 该代码警告与第一场比赛。

 var str = "I expect five hundred dollars ($500) ($1)."; var rex = /\$\d+(?=\))/g; var matches = str.match(rex); for (var i = 0; i < matches.length; i++) { alert(matches[i]); } 

此代码提醒所有匹配。

参考文献:

search“?= n” http://www.w3schools.com/jsref/jsref_obj_regexp.asp

search“x(?= y)” https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/RegExp