根据javascript中的多个定界符分割字符串(包括单个反斜杠作为分隔符)

时间:2019-04-02 19:18:32

标签: javascript regex backslash separator delimiter-separated-values

我正在尝试通过引用Multi-tenant app with database-per-tenant来基于多个定界符来分割字符串,但是我需要包括一个反斜杠作为定界符。

我有这个

var x = 'a/b\c?d@f#g$h%i^j&k:m;n,l.o(p)q{r}t!u`v~x-y+z=A*B_C|D"E\'F G';

var separators = ['/','\\\\','\\\?','@','#','\\\$','%','\\\^','&',':',';',',','\\\.','\\\(','\\\)','{','}','!','`','~','-','\\\+','=','\\\*','_','\\\|','\\\"','\\\'',' '];
console.log(separators.join('|'));
var tokens = x.split(new RegExp(separators.join('|'), 'g'));
console.log(tokens);

这是我的结果

["a", "bc", "d", "f", "g", "h", "i", "j", "k", "m", "n", "l", "o", "p", "q", "r", "t", "u", "v", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G"]

请注意,b \ c没有分裂

我在分隔符列表中尝试了'\\\','\\'和'\',但没有任何效果。

谢谢

1 个答案:

答案 0 :(得分:0)

根据Pushpesh Kumar Rajwanshi的回答,\充当转义字符。请注意,下面使用\\作为有效的分隔符即可。

另请参阅:How to split a string with a backslash in javascript?

var x = 'a/b\\c?d@f#g$h%i^j&k:m;n,l.o(p)q{r}t!u`v~x-y+z=A*B_C|D"E\'F G';

var separators = ['/','\\\\','\\\?','@','#','\\\$','%','\\\^','&',':',';',',','\\\.','\\\(','\\\)','{','}','!','`','~','-','\\\+','=','\\\*','_','\\\|','\\\"','\\\'',' '];
console.log(separators.join('|'));
var tokens = x.split(new RegExp(separators.join('|'), 'g'));
console.log(tokens);