在正则表达式中添加(?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”)