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

Adding a (?i) in the regex causes an error in javascript "invalid regex group"

本文关键字:正则表达式 错误 javascript 无效 添加      更新时间:2023-09-26

我有一个正则表达式

/^(?!.*qwerty)[0-9a-zA-Z]*$/   

但是每次我在 querty 前面添加一个 (?i( 时,它都会在 JavaScript 中导致错误"无效的正则表达式组">

有人可以告诉我为什么吗?

在仅为修饰符构建的地方添加i有什么问题。JS不允许将修饰符放置在正则表达式中。

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

请参阅正则表达式修饰符 - 在 rexegg.com 打开它们:

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

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

^(?!.*[Qq][Ww][Ee][Rr][Tt][Yy])[0-9a-zA-Z]*$ 

如果您负担得起第三方XRegExp库,则可以使用内联修饰符

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

这是一个演示:

var regex = XRegExp('(?i)^(?!.*qwerty)[0-9a-zA-Z]*$');
document.body.innerHTML = regex.test("Text QwErty");
<script src="https://cdnjs.cloudflare.com/ajax/libs/xregexp/2.0.0/xregexp-all-min.js"></script>