Javascript 使用正则表达式获取包含括号的内容

Javascript 使用正则表达式获取包含括号的内容,javascript,jquery,regex,regex-negation,regex-lookarounds,Javascript,Jquery,Regex,Regex Negation,Regex Lookarounds,我不熟悉正则表达式。我正在尝试使用正则表达式获取括号内的内容 例子 7+(4*6)-->(4*6) (44/(2*(1+3))--->(1+3) (54-(23+12))--->(23+12) 因此,我的预期输出以(后跟数字,后跟空格(可能不是),后跟四个运算符中的任何一个(+、-、*、/),后跟空格(可能不是),后跟) 提前感谢…试试这个: \( *\d+ *[-+*/] *\d+ *\) 这意味着: 匹配字符“(”字面意思 逐字匹配字符“”。 在0到无限次之间,尽可能多,根据需要回馈(

我不熟悉正则表达式。我正在尝试使用正则表达式获取括号内的内容

例子

  • 7+(4*6)
    -->
    (4*6)
  • (44/(2*(1+3))
    --->
    (1+3)
  • (54-(23+12))
    --->
    (23+12)
  • 因此,我的预期输出以
    后跟数字,后跟空格(可能不是),后跟四个运算符中的任何一个(+、-、*、/),后跟空格(可能不是),后跟

    提前感谢…

    试试这个:

    \( *\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)"
    
    试试这个:

    \( *\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)"
    
    试试这个:

    \( *\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)"
    
    试试这个:

    \( *\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)"
    

    您可以使用lookahead获取最里面的括号和封闭文本

    这个正则表达式应该可以:

    \((?=[^(]*$)[^)]*\)
    
    测试:

    '7+(4*6)'.match(/\((?=[^(]*$)[^)]*\)/);
    //=> ["(4*6)"]
    
    '(44/(2*( 1 + 3)))'.match(/\((?=[^(]*$)[^)]*\)/);
    //=> ["( 1 + 3)"]
    
    '(54-(23+12))'.match(/\((?=[^(]*$)[^)]*\)/);
    //=> ["(23+12)"]
    

    在线演示:您可以使用lookahead获取最里面的括号和封闭文本

    这个正则表达式应该可以:

    \((?=[^(]*$)[^)]*\)
    
    测试:

    '7+(4*6)'.match(/\((?=[^(]*$)[^)]*\)/);
    //=> ["(4*6)"]
    
    '(44/(2*( 1 + 3)))'.match(/\((?=[^(]*$)[^)]*\)/);
    //=> ["( 1 + 3)"]
    
    '(54-(23+12))'.match(/\((?=[^(]*$)[^)]*\)/);
    //=> ["(23+12)"]
    

    在线演示:您可以使用lookahead获取最里面的括号和封闭文本

    这个正则表达式应该可以:

    \((?=[^(]*$)[^)]*\)
    
    测试:

    '7+(4*6)'.match(/\((?=[^(]*$)[^)]*\)/);
    //=> ["(4*6)"]
    
    '(44/(2*( 1 + 3)))'.match(/\((?=[^(]*$)[^)]*\)/);
    //=> ["( 1 + 3)"]
    
    '(54-(23+12))'.match(/\((?=[^(]*$)[^)]*\)/);
    //=> ["(23+12)"]
    

    在线演示:您可以使用lookahead获取最里面的括号和封闭文本

    这个正则表达式应该可以:

    \((?=[^(]*$)[^)]*\)
    
    测试:

    '7+(4*6)'.match(/\((?=[^(]*$)[^)]*\)/);
    //=> ["(4*6)"]
    
    '(44/(2*( 1 + 3)))'.match(/\((?=[^(]*$)[^)]*\)/);
    //=> ["( 1 + 3)"]
    
    '(54-(23+12))'.match(/\((?=[^(]*$)[^)]*\)/);
    //=> ["(23+12)"]
    
    在线演示: 还有你最好的

    还有你最好的

    还有你最好的

    还有你最好的。

    试试这个变体

    \((?!.*\().*?\)
    
    试试这个变体

    \((?!.*\().*?\)
    
    试试这个变体

    \((?!.*\().*?\)
    
    试试这个变体

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

    上面的代码到底是做什么的?它有什么用处?它是您要求的正则表达式。它查找没有嵌套括号的括号。上面的代码具体做什么?它有什么用处?它是您要求的正则表达式。它是罗