【问题标题】:What does "?-mix:" mean in regex“?-mix:”在正则表达式中是什么意思
【发布时间】:2013-04-26 14:22:20
【问题描述】:

“?-mix:”在正则表达式中是什么意思,这在 javascript/jQuery 中也有效吗?如果它无效,什么是合适的替代品。

更新:这是完整的正则表达式/(?-mix:^[^,;]+$)/

它在 chrome 中的 javascript 中使用,我收到以下错误:

Uncaught SyntaxError: Invalid regular expression: /(?-mix:^[^,;]+$)/: Invalid group

注意:我发现这很有帮助:How to translate ruby regex to javascript? - (?i-mx:..) and Rails 3.0.3

【问题讨论】:

    标签: javascript jquery regex


    【解决方案1】:

    假设 perl 上下文,(?-mix) 这会

    • -m 禁用多行匹配
    • -i 禁用不区分大小写的匹配
    • -x 禁用扩展正则表达式空格

    请看这里:http://www.regular-expressions.info/modifiers.html

    并非所有的正则表达式都支持这一点。 JavaScript 和 Python 将所有模式修饰符应用于整个正则表达式。它们不支持 (?-ismx) 语法,因为当模式修饰符应用于整个正则表达式时,关闭选项是没有意义的。所有选项默认关闭。

    【讨论】:

      【解决方案2】:

      既然您现在已经明确说明这里的上下文是 javascript,我认为 javascript 不支持该标志语法,因此它抱怨 ^ 出现在正则表达式的中间。由于您永远无法在匹配的中间找到匹配的开始,这会导致无效的正则表达式。

      在 javascript 中,您可以在正则表达式本身之外指定标志,例如:

      var re = /^[^,;]+$/mi;
      

      或作为这样的参数:

      var re = new RegExp("^[^,;]+$", "mi");
      

      javascript 不支持x 标志,并且这个特定的正则表达式不需要i 标志。

      这个特定的正则表达式试图做的是告诉您匹配它的字符串是否包含除,; 之外的所有字符并且不为空。

      【讨论】:

        猜你喜欢
        • 2012-06-10
        • 1970-01-01
        • 2011-06-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-28
        • 1970-01-01
        • 2012-09-07
        相关资源
        最近更新 更多