'RegEx for email with only one special character
Solution 1:[1]
I managed to find the right regex for my question
/^[A-Z0-9]+(?:[_%+.-][A-Z0-9]+)?@[A-Z0-9.-]+\.[A-Z]{2,4}$/i
Solution 2:[2]
As mentioned in the comments, you can try with
/^[A-Z0-9]+(?:[_%+.-][A-Z0-9]+)?@[A-Z0-9.-]+\.[A-Z]{2,4}$/i
or
/^[A-Z0-9]+[_%+.-][A-Z0-9]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i
(if there must be at least three chars before @ with . in the middle only). Try to give us more test cases to check your requirements, you can check here.
Solution 3:[3]
Try using this regex:
^[^@_\%+\-\.]+[^@][^@_\%+\-\.]+@[A-Za-z\.]+$
Explanation:
^
: begin of string[^@_\%+\-\.]+
: any character other than @ or special character (_%+-.)[^@]
: any character other than @ (here will match the special character, if present)[^@_\%+\-\.]+
: any character other than @ or special character (_%+-.)@
: @[A-Za-z\.]+
: any combination of alphabetical character and dot$
: end of string
Try it here.
Note: the considered special characters are the one you listed in your problem statement. If there are further special characters, you just need to add them inside explained part 2 and 4.
Solution 4:[4]
This should meet your need (some may be invalid in format):
^[a-z0-9]*[_%+\-.][a-z0-9]*
...
If there must be characters surrounding those special chars (valid in format):
^[a-z0-9]+[_%+\-.][a-z0-9]+
...
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | user2004 |
Solution 2 | rikyeah |
Solution 3 | lemon |
Solution 4 |