JavaScript字符串使用多个定界符进行拆分,同时保留定界符

时间:2019-04-17 07:15:04

标签: javascript regex split

我想使用多个定界符在JavaScript中拆分字符串,同时仍保留定界符。 我用此RegEx尝试过,但得到了我不感兴趣的比赛。

"id:123 name:test pumpe desc:pumpe p123".split(/(?=(id:))|(?=(name:))|(?=(desc:))/gi)

我得到的输出:

["id:123 ", undefined, "name:", undefined, "name:test pumpe ", undefined, undefined, "desc:", "desc:pumpe p123"]

我想要的输出:

["id:123", "name:test pumpe", "desc:pumpe p123"]

我尝试用正则表达式进行修饰,但无法获得所需的输出。

4 个答案:

答案 0 :(得分:2)

您实际要分割的定界符是空格,特别是后面跟name:id:desc:的空格。

遵循此逻辑,可以构造此正则表达式:

/ (?=name:|id:|desc)/i

(请注意初始空格)

在这里尝试:https://regex101.com/r/0RxEU9/1

console.log("id:123 name:test pumpe desc:pumpe p123".split(/ (?=name:|id:|desc)/i))

答案 1 :(得分:1)

您可以查找空格,然后不要空格和冒号。

console.log("id:123 name:test pumpe desc:pumpe p123".split(/\s(?=\S+?:)/));

答案 2 :(得分:1)

如果键名未知,则可以在每个split后面紧跟\s进行\w+:

Regex demo

const splits = "id:123 name:test pumpe desc:pumpe p123".split(/\s+(?=\w+:)/)
console.log(splits)

答案 3 :(得分:0)

您正在寻找遵循[name:]|[desc:]|[id:]模式的内容,因此简化您的正则表达式:

console.log("id:123 name:test pumpe desc:pumpe p123".split(/ (?=name:|id:|desc:)/i));