使用正则表达式匹配大写字母和小写字母

9
我写了一些类似这样的RegExp模式:
SomeText

但是我希望匹配的模式是:
Sometext
sOMeTeXt
SOMETEXT
SoMEteXt

类似这样的东西!

实际上我想使用这个。

\s?[^a-zA-Z0-9\_]SomeText[^a-zA-Z0-9\_]

我该怎么办?


1
你使用哪种语言/正则表达式实现? - Gumbo
5个回答

13
许多正则表达式实现都支持指定修饰符,以应用于模式的特定部分。大小写不敏感是其中之一:
\s?[^a-zA-Z0-9\_](?i)sometext(?-i)[^a-zA-Z0-9\_]

(?i)(?-i)之间的部分将被置于不区分大小写模式。根据这个比较表,如果您使用的是.net、Java、Perl、PCRE、Ruby或JGsoft引擎,则支持此功能。

当然,由于您在字符类中同时指定了a-zA-Z,因此您可以简化并在整个模式上使用不区分大小写修饰符:

/\s?[^a-z0-9\_]sometext[^a-z0-9\_]/i

11

如果您无法使用修饰符:

[Ss][Oo][Mm][Ee][Tt][Ee][Xx][Tt]

^[Yy]+[es]?[eS]?[Es]?[ES]?$:混合大小写的正则表达式,其中 Y 不是可选项。 - Joviano Dias

10
您可以使用忽略大小写的修饰符:
/sometext/i

2

Javascript:大小写字母可以任意顺序使用。

value.match(new RegExp(searchkey, "i")) 

0
如果您需要使用变量名称创建正则表达式,并全局不区分大小写进行比较,请使用以下示例: let str = 'Basappa'; var regex = new RegExp(str, "gi");

OP没有提到具体的编程语言或技术,但是你正在使用JS,并且不区分大小写的修饰符并不一定存在于所有正则表达式实现中。 - Eyad Mohammed Osama

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接