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)