正则表达式中的"?-mix:"是什么意思?

6
在正则表达式中,"?-mix:"是什么意思?它在javascript/jQuery中有效吗?如果无效,有何适当替代方案。
更新:这是完整的正则表达式/(?-mix:^[^,;]+$)/。它在chrome的javascript中使用,我得到以下错误:
Uncaught SyntaxError: Invalid regular expression: /(?-mix:^[^,;]+$)/: Invalid group 注意:我发现这个链接很有用:如何将ruby正则表达式翻译成javascript?- (?i-mx:..)和Rails 3.0.3
2个回答

10

假设在 Perl 上下文中,(?-mix) 的作用是:

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

详情请参见:http://www.regular-expressions.info/modifiers.html

并非所有正则表达式的语言都支持此功能。JavaScript 和 Python 将所有模式修改器应用于整个正则表达式,它们不支持 (?-ismx) 语法,因为在整个正则表达式中关闭选项是没有意义的。所有选项默认情况下都是关闭的。


3

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

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

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

或者像这样作为参数传递:
var re = new RegExp("^[^,;]+$", "mi");
< p >在JavaScript中不支持x标志,而且这个特定的正则表达式不需要i标志。< /p> < p >这个特定的正则表达式试图告诉你,你匹配的字符串是否包含除,;之外的所有字符,并且不为空。< /p>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接