在正则表达式中添加(?i)会导致javascript中出现错误;无效的正则表达式组“;

在正则表达式中添加(?i)会导致javascript中出现错误;无效的正则表达式组“;,javascript,regex,Javascript,Regex,我有一个正则表达式 /^(?!.*qwerty)[0-9a-zA-Z]*$/ 但每次我在query前面添加一个(?I),它都会在javascript“invalid regex group”中导致一个错误 有人能告诉我为什么吗?在只为修改器而建的地方添加i有什么不对。JS不允许在正则表达式中放置修饰符 /^(?!.*qwerty)[0-9A-Z]*$/i 见: 内联修饰符(?i) 在.NET、PCRE(C、PHP、R…)、Perl、Python、Java和Ruby(但不是JavaScr

我有一个正则表达式

/^(?!.*qwerty)[0-9a-zA-Z]*$/   
但每次我在query前面添加一个(?I),它都会在javascript“invalid regex group”中导致一个错误


有人能告诉我为什么吗?

在只为修改器而建的地方添加
i
有什么不对。JS不允许在正则表达式中放置修饰符

/^(?!.*qwerty)[0-9A-Z]*$/i
见:

内联修饰符
(?i)

在.NET、PCRE(C、PHP、R…)、Perl、Python、Java和Ruby(但不是JavaScript)中,可以使用内联修饰符
(?i)
,例如在
(?i)cat

您可以使用匹配大小写变体的字符类:

^(?!.*[Qq][Ww][Ee][Rr][Tt][Yy])[0-9a-zA-Z]*$ 
如果您负担得起第三方,则可以使用内嵌修改器:

模式修饰符使用语法
(?imnsuxA)
,其中
imnsuxA
XRegExp
标志的任意组合,但
g
y
除外。模式修饰符提供了启用指定标志的替代方法

下面是一个演示:

var regex=XRegExp('(?i)^(?!qwerty)[0-9a-zA-Z]*$);
document.body.innerHTML=regex.test(“文本QwErty”)

因为JS不支持内联修饰符谢谢您的回答。我试图在外部grails配置中实现这个正则表达式,当我最后添加“I”时,编译失败,因为它被认为是无效的令牌。你知道如何转义吗?你也可以使用
RegExp
构造函数,比如,
RegExp(“^(?。*qwerty)[0-9A-Z]*$”,“i”)