【问题标题】:JavaScript/regex: Remove text between parenthesesJavaScript/正则表达式:删除括号之间的文本
【发布时间】:2011-05-16 14:26:35
【问题描述】:

能改吗

Hello, this is Mike (example)

Hello, this is Mike

在正则表达式中使用 JavaScript?

【问题讨论】:

    标签: javascript regex


    【解决方案1】:
    "Hello, this is Mike (example)".replace(/ *\([^)]*\) */g, "");
    

    结果:

    "Hello, this is Mike"
    

    【讨论】:

    • 注意 .replace() 不会改变字符串本身,它只会返回一个新的字符串。因此,您仍然必须将变量设置为等于您更改的内容。
    • 括号在字符串中间的地方,上面的正则表达式将删除它们周围的所有空格。这可能不太好。
    • 如何反其道而行之?我只想要(example)
    • 如果你有类似的东西就不起作用:它有点乱(上(右))但它发生了:)
    • 不是一个强大的解决方案,它可以在控制台上运行,但由于某种原因不在脚本标签中,它已经尝试了很多次。另一个答案工作得很好。
    【解决方案2】:
    var str = "Hello, this is Mike (example)";
    
    alert(str.replace(/\s*\(.*?\)\s*/g, ''));
    

    这也将替换括号前后多余的空格。

    【讨论】:

      【解决方案3】:

      试试/ \([\s\S]*?\)/g

      在哪里

      (空格)匹配字符 (空格)字面意思

      \( 匹配字符 ( 字面意思

      [\s\S] 匹配任何字符(\s 匹配任何空白字符,\S 匹配任何非空白字符)

      *? 匹配零次到无限次

      \) 匹配字符 ) 字面意思

      g 全局匹配

      代码示例:

      var str = "Hello, this is Mike (example)";
      str = str.replace(/ \([\s\S]*?\)/g, '');
      console.log(str);
      .as-console-wrapper {top: 0}

      【讨论】:

        【解决方案4】:

        如果您还需要删除嵌套括号内的文本,那么:

                var prevStr;
                do {
                    prevStr = str;
                    str = str.replace(/\([^\)\(]*\)/, "");
                } while (prevStr != str);
        

        【讨论】:

          【解决方案5】:

          我发现这个版本最适合所有情况。它不会删除所有空格。

          例如“a(测试)b”->“a b”

          "Hello, this is Mike (example)".replace(/ *\([^)]*\) */g, " ").trim(); "Hello, this is (example) Mike ".replace(/ *\([^)]*\) */g, " ").trim();

          【讨论】:

          猜你喜欢
          • 2021-09-25
          • 2012-07-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-06-21
          • 1970-01-01
          相关资源
          最近更新 更多