不区分大小写的正则表达式

ofi*_*rbt 7 .net c# regex

我想在C#中使用Regex验证电子邮件地址.

我正在使用这种模式:

^[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$
Run Code Online (Sandbox Code Playgroud)

此模式仅匹配大写字母.例如:

"example@gmail.com" - >返回false."EXAMPLE@GMAIL.COM" - >返回true.

我显然希望第一个例子也会返回true.

注意:我不想使用该RegexOptions.IgnoreCase标志.

我想更改模式本身以匹配第一个示例.我认为我可以在模式的末尾添加一个"/ i"或类似的东西,但它似乎不起作用.我也不喜欢在开头使用"?i".

我怎样才能实现这一目标?

(如果你可以为我重写整个模式,那就太棒了!).

谢谢.

Han*_*ing 18

而不仅仅是[AZ],使用[A-Za-z].

但请注意:有些电子邮件地址以.travel等顶级域名结尾,根据你的正则表达式是禁止的!


Jak*_*ake 13

你可以使用: ^(?i)[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$

注意(?i)哪个设置了RegexOptions.IgnoreCase,这样你就不必修改正则表达式中的任何字符类或修改代码的使用位置.

示例(在F#交互式中):

Regex.Match("test@test.com", @"^(?i)[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$");;
val it : Match = test@test.com {Captures = seq [...];
                              Groups = seq [...];
                              Index = 0;
                              Length = 13;
                              Success = true;
                              Value = "test@test.com";} 
Run Code Online (Sandbox Code Playgroud)


小智 5

好吧,这会起作用。

^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+.[A-Za-z]{2,4}$
Run Code Online (Sandbox Code Playgroud)