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.
CodePudding user response:
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|- or\S- any non-whitespace char
)- end of the group, repeat one or more times.
The /g flat tells .match() to extract all occurrences.
CodePudding user response:
I don't know if you need just 3 elements in the array, if so you can try
string.split(" ", 3)
