6

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

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

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

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

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

4

2 回答 2

10

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

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

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

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

于 2013-04-26T14:24:46.407 回答
3

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

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

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

或作为这样的论点:

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

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

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

于 2013-04-26T14:37:52.487 回答