I have the following regex: /(\s?[^\s,] @[^\s,] .[^\s,] \s?;)*(\s?[^\s,] @[^\s,] .[^\s,] )/g
Could you tell me why it matches this string: "[email protected];tesr" and doesn't match this one: "[email protected]; test" ?
It shouldn't match the first string. However if there is a valid email after the ; like [email protected], it should be matched.
I will be very grateful if you could help me out.
CodePudding user response:
You can use
^[^@\s;] @[^\s;] \.[^\s;] (?:\s*;\s*[^@\s;] @[^\s;] \.[^\s;] )*;?$
See the regex demo. Details:
^
- start of string[^@\s;]
- zero or more chars other than@
, whitespace and;
@
- a@
char[^\s;]
- zero or more chars other than whitespace and;
\.
- a dot[^\s;]
- zero or more chars other than whitespace and;
(?:\s*;\s*[^@\s;] @[^\s;] \.[^\s;] )*
- zero or more repetition of a;
enclosed with zero or more whitespaces, and then the same pattern as above;?
- an optional;
$
- end of string.