我正在尝试编写一个正则表达式,它返回括号之间的字符串 . 例如:我想获取字符串“(”和“)”之间的字符串
I expect five hundred dollars ($500).
会回来的
$500
找到Regular Expression to get a string between two strings in Javascript
但我是正则表达式的新手 . 我不知道如何在regexp中使用'(',')'
我正在尝试编写一个正则表达式,它返回括号之间的字符串 . 例如:我想获取字符串“(”和“)”之间的字符串
I expect five hundred dollars ($500).
会回来的
$500
找到Regular Expression to get a string between two strings in Javascript
但我是正则表达式的新手 . 我不知道如何在regexp中使用'(',')'
7 回答
您需要创建一组转义(带有
\
)括号(与括号匹配)和一组创建捕获组的常规括号:分解:
\(
:匹配一个左括号(
:开始捕获组[^)]+
:匹配一个或多个非)
字符)
:结束捕获组\)
:匹配右括号这是一个关于RegExplained%252F)的视觉解释
尝试字符串操作:
或正则表达式(有点slow compare to the above)
将Mr_Green's answer移植到函数式编程样式以避免使用临时全局变量 .
仅适用于货币符号后的数字:
\(.+\s*\d+\s*\)
应该有效或
\(.+\)
括号内的任何内容Simple solution
Notice :此解决方案用于此问题中仅包含单个"("和")"字符串的字符串 .
Online demo (jsfiddle)
要匹配括号内的子字符串,不包括您可能使用的任何内括号
图案 . 见the regex demo .
在JavaScript中,使用它
Pattern details
\(
- 一个(
char([^()]*)
- 捕获组1:negated character class匹配(
和)
以外的任何0或更多字符\)
- 一个)
char .要获得整个匹配,请抓取Group 0值,如果需要括号内的文本,请获取Group 1值:
将匹配以$开头的第一个数字,后跟')' . ')'不会参加比赛 . 代码会在第一场比赛时发出警报 .
此代码会提醒所有匹配项 .
参考文献:
搜索"?=n" http://www.w3schools.com/jsref/jsref_obj_regexp.asp
搜索"x(?=y)" https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/RegExp