当前位置:  开发笔记 > 编程语言 > 正文

Javascript正则表达式忽略特定捕获组的大小写

如何解决《Javascript正则表达式忽略特定捕获组的大小写》经验,为你挑选了1个好方法。

在PCRE中,这将是一个有效的表达式

/^\!(foo|bar) ((?i)ab|cd|ef|gh)$/

但在JavaScript Regex中,这是无效的.不幸的是我不知道(?i)叫什么,所以我在google它时遇到了一些麻烦.如何将此给定示例翻译为在JavaScript中有效?


我真正想做的事情:

发现与开始的所有行!foo!bar后面加一个空格和结束ab,cd,efgh.后者应该不区分大小写.

!foo CD
!foo cD
!foo cd

一切都会有效.而

!FOO cd!Foo cd

会无效的



1> Giuseppe Ric..:

(?i)case-insensitive flag:从正则表达式中放置它的位置开始,它使所有character class包含的字母[a-z]也匹配[A-Z](并且反之亦然).这也适用于单个字母a(匹配aA)或序列ab(匹配ab,Ab,aB,AB).

所以你可以把它放在你的正则表达式的开头/(?i)regex/(使它等同于js /regex/i),或者你可以将它与它的相反使用它(?-i)只做一部分正则表达式case-insensitive:

/^(?i)[a-z]{2}(?-i)[a-z]{2}/ 

上面的正则表达式匹配2个大写或小写字符加上2个严格小写的字符.

比赛 - > ROck,rOck,Rock
Not Matches - > ROCK,roCk,rOcK

你的PCRE正则表达式怎么样?

/^\!(foo|bar) ((?i)ab|cd|ef|gh)$/

如果您不介意匹配也!Foo,!FOo,!foO,!fOO,!BAR,!bar,...可以将字符串放在外面,如下所示:

/^!(foo|bar) (ab|cd|ef|gh)$/i # you can also remove the escape from \! -> !

如果你想要相当于原始PCRE正则表达式(/^!(foo|bar) ((?i)ab|cd|ef|gh)$/)的等价js正则表达式,则可读性较差:

/^!(foo|bar) ([Aa][Bb]|[Cc][Dd]|[Ee][Ff]|[Gg][Hh])$/

推荐阅读
Life一切安好
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有