我想写一个正则表达式返回一个括号之间的字符串。例如:我想驻留在字符串之间的字符串“(”和“)”正则表达式获取Javascript中的括号之间的字符串
I expect five hundred dollars ($500).
将返回
$500
找到Regular Expression to get a string between two strings in Javascript
但我是新与正则表达式。我不知道如何在正则表达式中使用'(',')'
我想写一个正则表达式返回一个括号之间的字符串。例如:我想驻留在字符串之间的字符串“(”和“)”正则表达式获取Javascript中的括号之间的字符串
I expect five hundred dollars ($500).
将返回
$500
找到Regular Expression to get a string between two strings in Javascript
但我是新与正则表达式。我不知道如何在正则表达式中使用'(',')'
您需要创建一组转义(与\
)括号(与圆括号匹配)和一组创建捕获的常规圆括号组:
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
只是稍微数字的视觉解释标志:\(.+\s*\d+\s*\)
应该工作
或\(.+\)
fo R内支架什么
这将适用于示例文本,但如果在字符串后面出现另一个'''',例如'我期望500美元(500美元)“。 (但我要付钱)。“+”的贪婪将会捕捉更多。 –
@Denomales那么你会如何捕获这些字符串的两个实例。理想情况下,我正在做类似的事情,但我想要: '($ 500)'和'(但我要付钱)' 匹配,但在两个分开的比赛,而不是被视为一个单一的匹配项目? 在此先感谢! –
尝试字符串操作:
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]);
}
或正则表达式(这有点slow compare to the above)
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));
}
今天在Chrome 59.0.3071上运行jsperf,正则表达式的速度提高了8% –
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]);
}
此代码提示所有匹配项。
参考文献:
搜索 http://www.w3schools.com/jsref/jsref_obj_regexp.asp
搜索 “X(= Y?)” https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/RegExp
阀块Mr_Green's answer到官能编程风格,以避免使用 “= N?”临时全局变量。
var matches = string2.split('[')
.filter(function(v){ return v.indexOf(']') > -1})
.map(function(value) {
return value.split(']')[0]
})
简单的解决方案
注意:该解决方案用于字符串只具有单一的 “(” 和 “)” 想在这个问题字符串。
("I expect five hundred dollars ($500).").match(/\((.*)\)/).pop();
的
可能重复的[正则表达式找到包括两个字符之间的字符串,同时排除定界符(http://stackoverflow.com/questions/1454913/regular-expression-to- find-a-string-included-between-two-characters-while-exclu) –
您可以使用go-oleg的解决方案,稍作修改以测试美元符号:'var regExp =/\(\ $([^) ] +)\)/;' –