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.