case insensitive regex
Solution 1
Instead of just [A-Z], use [A-Za-z].
But watch out: there are e-mail addresses that end in top-level domains like .travel, that are forbidden according to your regex!
Solution 2
You can just use: ^(?i)[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$
Notice the (?i) which sets the RegexOptions.IgnoreCase, this way you wont have to modify any character classes in the regex or modify where the code is used.
Example (In F# interactive):
Regex.Match("[email protected]", @"^(?i)[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$");;
val it : Match = [email protected] {Captures = seq [...];
Groups = seq [...];
Index = 0;
Length = 13;
Success = true;
Value = "[email protected]";}
Related videos on Youtube
ofirbt
Updated on January 26, 2020Comments
-
ofirbt over 3 years
I want to validate an email address with Regex in C#.
I'm using this pattern:
^[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$This pattern only matches upper case letters. For example:
"[email protected]" --> returns false. "[email protected]" --> returns true.
I obviously would like that the first example will also return true.
NOTE: I DON'T want to use the
RegexOptions.IgnoreCaseflag.I would like to change the pattern itself to match the first example. I think that I can add a "/i" in the end of the pattern or something like this but it doesn't seems to work. I prefer not to use the "?i" in the beginning as well.
How can i achieve this?
(If you could rewrite the whole pattern for me, it would be great!).
Thanks.
-
BoltClock over 12 yearsHow is PCRE'simodifier any better than .NET'sRegexOptions.IgnoreCase? Is it because it's 22 characters less to type? -
Dave D over 12 years@Johann characters don't need escaping within [] blocks (at least in the .NET regex syntax).
-
Toto over 12 yearsBe aware that TLD may have more than 4 character long liketravelormuseum
-
-
edhubbell almost 10 yearsI like it - Using theimodifier to set.ignoreCaseis much better than setting.ignoreCasein your code. Using theimeans if your regex is stored in a settings file or database you can change it easily.