【问题标题】:How to combine 2 conditions and more in regex如何在正则表达式中结合 2 个条件和更多条件
【发布时间】:2012-03-13 15:06:20
【问题描述】:

我想创建一个匹配 '.'、'#' 和 ':' 的正则表达式 并且还匹配这些括号 '[' & ']' 内的所有内容,例如 [foo] & [酒吧]

我已经为 '.'、'#' 和 ':' 匹配了 string.match(/[.#:]/g)

我知道括号正则表达式应该是这样的\[.\]

但是如何将它们结合到一个条件中呢?

谢谢, 阿隆

【问题讨论】:

    标签: javascript regex string match


    【解决方案1】:

    将它们结合起来使用

    /[.#:]|(?:\[.+?\])/g
    

    ?: 是可选的,用于不捕获组(括号中的任何内容)

    更新:

    .+?(一个或多个)或.*?(零个或多个)- 使用它进行惰性匹配,否则 [ sdfsdf][sdfsddf ] 将被匹配

    【讨论】:

    • 点不是字符类括号内的元字符。
    • 当然。把那些反斜杠去掉感觉很好,不是吗。 :)
    【解决方案2】:
    var s = "a . b # c : d [foo]";
    var m = /[.:#]|\[.*?\]/g;
    s.match(m);
    // returns [".", "#", ":", "[foo]"]
    

    【讨论】:

      【解决方案3】:
      var data = '[content]kjalksdjfa.sdf[sc.tt].#:';
      var myregexp = /(\[.+?\])|[.#:]/g;
      var match = myregexp.exec(data);
      var result = "Matches:\n";
      while (match != null) {
          result +=  "match:"+match[0] + ',\n';
          match = myregexp.exec(data);
      }
      alert(result);
      

      【讨论】:

        猜你喜欢
        • 2021-02-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-16
        • 2021-09-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多