从数组中分割带有多个定界符的字符串

时间:2019-07-05 06:27:54

标签: javascript arrays regex string

我需要用多个定界符分割一个字符串。

我的字符串是var str = "2$4@3*5"

我的定界符(分隔符)数组为var del = ["$","@", "*"]

我正在使用正则表达式,但是它不起作用。

str.split(new RegExp(del.join('|'), 'gi'));

结果应为["2","4","3","5"]

但是我遇到错误SyntaxError: Invalid regular expression: /*/: Nothing to repeat

当我移除*时,结果数组为["2$3',"3", "5"]

如何从多个定界符中拆分多个定界符?

为什么这不适用于$*

2 个答案:

答案 0 :(得分:1)

您需要先转义特殊字符-this answer中的replace函数:

var str = "2$4@3*5";    
var del = ["$", "@", "*"];    

const res = str.split(new RegExp(del.map(e => e.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&')).join("|"), "gi"));
    
console.log(res);

答案 1 :(得分:0)

尝试这样。

我在split中传递了Regex表达式。

var str = "2$4@3*5"

var res=  str.split(/[$,@,*]+/)

console.log(res)