I'm trying to create regex for multiple strings separated by comma or space.
Lorem Ipsum // valid
Lorem, Ipsum //valid
Lorem, Ipsum, Ipsum, Ipsum // multiple valid
Lorem // invalid without space/comma
Here is what i have so far:
^\w+(,\s*\w+){3}$/
Yes, also your regex will match if there are just spaces.
i) makes the regex case insensitive. (? s) for "single line mode" makes the dot match all characters, including line breaks.
The most common forms of whitespace you will use with regular expressions are the space (␣), the tab (\t), the new line (\n) and the carriage return (\r) (useful in Windows environments), and these special characters match each of their respective whitespaces.
You may use
^\w+(?:(?:,\s\w+)+|(?:\s\w+)+)$
See the regex demo.
The regex matches:
^
- start of string\w+
- 1+ word chars(?:
- start of an alternation group:
(?:,\s\w+)+
- ,
, whitespace, 1+ word chars|
- or(?:\s\w+)+
- whitespace and then 1+ word chars)
- end of group$
- end of string.You may shorten the pattern using a lookahead and a capturing group:
^\w+(?=(,?\s))(?:\1\w+)+$
See the regex demo. Here, the difference is (?=(,?\s))(?:\1\w+)+
:
(?=(,?\s))
- a positive lookahead that checks if there is an optional ,
and then a whitespace immediately to the right of the current location and captures that sequence into Group 1(?:\1\w+)+
- 1 or more sequences of:
\1
- the same text captured into Group 1\w+
- 1+ word chars.See the regex demo.
Try this regex:
^(\w+[, ]+)*\w+$
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With