使用正则表达式使用括​​号获取内容

时间:2014-03-15 02:52:21

标签: javascript jquery regex regex-negation regex-lookarounds

我是正则表达式的新手。我试图使用正则表达式获取括号内的内容

示例

  1. 7+(4*6) ---> (4*6)
  2. (44/(2*( 1 + 3))) ----> ( 1 + 3)
  3. (54-(23+12)) ----> (23+12)
  4. 所以,我的预期输出以(开头,后跟数字后跟空格(可能不是)后跟四个运算符中的任意一个(+, - ,*,/)后跟空格(可能不是)然后是)

    提前致谢...

4 个答案:

答案 0 :(得分:2)

您可以使用前瞻来获取最内部括号和附加文本。

这个正则表达式应该有效:

\((?=[^(]*$)[^)]*\)

<强>测试

'7+(4*6)'.match(/\((?=[^(]*$)[^)]*\)/);
//=> ["(4*6)"]

'(44/(2*( 1 + 3)))'.match(/\((?=[^(]*$)[^)]*\)/);
//=> ["( 1 + 3)"]

'(54-(23+12))'.match(/\((?=[^(]*$)[^)]*\)/);
//=> ["(23+12)"]

在线演示:http://regex101.com/r/fQ2iZ2

答案 1 :(得分:1)

试试这个:

\( *\d+ *[-+*/] *\d+ *\)

这意味着:

  • 匹配角色“(”字面意思。
  • 字面匹配字符“”。
    • 在0到无限次之间,尽可能多地根据需要回馈(贪婪)。
  • 匹配单个数字0..9
    • 在1和无限次之间,尽可能多地根据需要回馈(贪婪)。
  • 字面匹配字符“”。
    • 在0到无限次之间,尽可能多地根据需要回馈(贪婪)。
  • 匹配列表中的单个字符“ - + * /”。
  • 字面匹配字符“”。
    • 在0到无限次之间,尽可能多地根据需要回馈(贪婪)。
  • 匹配单个数字0..9
    • 在1和无限次之间,尽可能多地根据需要回馈(贪婪)。
  • 字面匹配字符“”。
    • 在0到无限次之间,尽可能多地根据需要回馈(贪婪)。
  • 匹配字符“)”字面意思。

示例:

var regExp = /\( *\d+ *[-+*/] *\d+ *\)/;
"7+(4*6)".match(regExp)[0];            // "(4*6)"
"(44/(2*( 1 + 3)))".match(regExp)[0];  // "( 1 + 3)"
"(54-(23+12))".match(regExp)[0];       // "(23+12)"

答案 2 :(得分:0)

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

你最好的pal

答案 3 :(得分:0)

尝试此变体

\((?!.*\().*?\)