我想使用多个定界符在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"]
我尝试用正则表达式进行修饰,但无法获得所需的输出。
答案 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+:
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));