在grails-config中实现不区分大小写的regex(?i)



我的grails配置中有一个regex:

password.regex = /^(?=.*[0-9])(?=.*[A-Z])(?=.*[a-z])(?!.*0123|.*1234|.*2345|.*3456|.*4567|.*5678|.*6789|.*3210|.*4321|.*5432|.*6543|.*7654|.*8765|.*9876|.*1122|.*2233|.*3344|.*4455|.*5566|.*6677|.*7788|.*8899|.*9900|.*0011|.*1100|.*qwerty)[0-9a-zA-Z]*$/

我限制正则表达式中的qwerty一词。我试图添加一个(?I)使其不区分大小写。*(?I。

我应该把这个不区分大小写的正则表达式放在哪里?我也尝试过转义它(?\\I),但它仍然会导致页面中使用的javascript出错。有人能解释一下原因吗?

您不能在JavaScript中使用内联正则表达式修饰符。此外,并不是每种风格都让我们用(?i:...)构造使模式的一部分不区分大小写。因此,您所能做的是非常有限的:只需使用字符类来指定每个单词的两个大小写变体:

.*[qQ][wW][eE][rR][tT][yY]

请参阅rexegg.comRegex Modifiers--打开它们参考:

内联修饰符(?i)在.NET、PCRE(C、PHP、R…)、Perl、Python、Java和Ruby(但不包括JavaScript)中,可以使用内联修饰符(?i),例如在(?i)cat中。有关三个附加功能(在Python中不可用)的有趣详细信息,请参阅内联修饰符部分:在字符串中间打开它,用(?-i)关闭它,或者用(?i:foo) 仅将它应用于非捕获组的内容

现在,使用/i作为(?i)的替代方案是使用XRegExp库:

创建regex时,可以在模式修饰符中包含标志,这些标志也是通过单独的flags参数提供的。例如,XRegExp('(?s).+', 's')是完全有效的。

然而,似乎不可能使模式的一部分不区分大小写:

与其他regex风格的兼容性:一些regex风格支持在模式中的任何位置使用多个模式修饰符,并允许通过(?-i)取消设置标志、通过(?i-m)同时设置和取消设置标志以及仅通过(?i:…)启用子模式的标志的扩展语法XRegExp不支持这些扩展选项*

最新更新