I need a regEx to match all whitespaces except those inside @ signs to make a correct split.
I have this string:
[0] == @Item 1@
With the split I need the following array (with or without @ in 3rd element):
var array = ["[0]","==","@Item 1@"];
With a simple split(” “) I get this:
var array = ["[0]","==","@Item","1@"];
Thank you for your help.
Advertisement
Answer
You can use
const text = '[0] == @Item 1@'; console.log( text.match(/(?:@[^@]*@|S)+/g) )
See the regex demo. The (?:@[^@]*@|S)+
pattern means:
(?:
– start of a non-capturing group:@[^@]*@
– a@
char, zero or more chars other than@
and then a@
char|
– orS
– any non-whitespace char
)+
– end of the group, repeat one or more times.
The /g
flat tells .match()
to extract all occurrences.