什么是“?-mix:”在正则表达式中的含义

时间:2013-04-26 14:22:20

标签: javascript jquery regex

“-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

2 个答案:

答案 0 :(得分:10)

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

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

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

  

并非所有正则表达式都支持此功能。 JavaScript和Python将所有模式修饰符应用于整个正则表达式。它们不支持(?-ismx)语法,因为当模式修饰符应用于整个正则表达式时,关闭选项毫无意义。默认情况下,所有选项均已关闭。

答案 1 :(得分:3)

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

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

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

或作为这样的论据:

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

javascript不支持x标记,此特定正则表达式不需要i标记。

这个特殊的正则表达式试图告诉你,你匹配的字符串是否包含,;以外的所有字符,并且不是空的。