I have a string and i want to split it into array using the '|' character but not '\|':
var a = 'abc\&|\|cba';
var b = a.split(/([^\\])\|/);
result :
b = ["abc", "&", "|cba"]
expected output :
b = ["abc\&", "\|cba"]
Basically I cannot use capturing groups in .split() function properly.
You could use a positive lookahead for splitting.
With escaped backslash
var a = 'abc\\&|\\|cba';
var b = a.split(/\|(?=\\)/);
console.log(b);
Without escaped backslash
/\|(?=\|)/
\| matches the character | literally
(?=\|) Positive Lookahead - Assert that the regex below can be matched
\| matches the character | literallyBasically it looks for a pipe, and splits if another pipe is following.
var a = 'abc\&|\|cba';
var b = a.split(/\|(?=\|)/);
console.log(b);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With