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

时间:2011-01-26 08:46:30

标签: c# .net regex

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

我正在使用这种模式:

^[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$

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

“example@gmail.com” - >返回false。 “EXAMPLE@GMAIL.COM” - >返回true。

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

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

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

我怎样才能做到这一点?

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

感谢。

3 个答案:

答案 0 :(得分:16)

使用[A-Za-z]。而不仅仅是[A-Z]。

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

答案 1 :(得分:11)

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

注意设置(?i)的{​​{1}},这样你就不必修改正则表达式中的任何字符类或修改代码的使用位置。

示例(在F#互动中):

RegexOptions.IgnoreCase

答案 2 :(得分:4)

嗯,这样可行。

^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+.[A-Za-z]{2,4}$