我试图写一个正则表达式,它返回一个字符串是括号之间。例如:我想获得位于字符串"("和")"之间的字符串
I expect five hundred dollars ($500).
将返回
$500
发现正则表达式在Javascript中获得两个字符串之间的字符串
我不知道如何在regexp中使用'(',')'。
我试图写一个正则表达式,它返回一个字符串是括号之间。例如:我想获得位于字符串"("和")"之间的字符串
I expect five hundred dollars ($500).
将返回
$500
发现正则表达式在Javascript中获得两个字符串之间的字符串
我不知道如何在regexp中使用'(',')'。
当前回答
匹配括号内的子字符串,不包括您可能使用的任何内括号
\(([^()]*)\)
模式。参见正则表达式演示。
在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)); }
其他回答
将Mr_Green的答案移植为函数式编程风格,以避免使用临时全局变量。
var matches = string2.split('[')
.filter(function(v){ return v.indexOf(']') > -1})
.map( function(value) {
return value.split(']')[0]
})
对于货币符号后面的数字:\(.+\s*\d+\s*\)应该可以
或\(.+\)表示括号内的任何内容
简单的解决方案
注意:这个解决方案可以用于这个问题中只有一个“(”和“)”的字符串。
("I expect five hundred dollars ($500).").match(/\((.*)\)/).pop();
在线演示(jsfiddle)
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]);
}
这段代码在所有匹配时发出警报。
引用:
搜索“?”= n” http://www.w3schools.com/jsref/jsref_obj_regexp.asp
搜索“x(?=y)” https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/RegExp
你需要创建一组转义(带\)圆括号(与圆括号匹配)和一组常规圆括号来创建你的捕获组:
var regExp = /\(([^)]+)\)/; var matches = regExp。exec(“我期望500美元。”); //匹配[1]包含括号之间的值 console.log(匹配[1]);
分解:
\(:匹配开括号 (:开始捕获组 [^)]+:匹配一个或多个非)字符 ):结束捕获组 \):匹配右括号
下面是RegExplained上的一个可视化解释