Home > OS >  Javascript RegEx to match all whitespaces except between special characters
Javascript RegEx to match all whitespaces except between special characters

Time:09-21

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)

split(separator, limit)

  • Related