gpt4 book ai didi

javascript - 无法根据正则表达式拆分字符串

转载 作者:行者123 更新时间:2023-12-05 09:35:00 26 4
gpt4 key购买 nike

我正在尝试使用 RegEx 模式根据 : 之后的值拆分字符串。

我期待的结果是这样的

[
"hello",
"js is fun!",
""
]

有人可以帮忙吗?

摘 self 的代码

const str = '0,0,5:hello0,1,5:js is fun!0,2,0:'
const result = str.match(/:[a-z]*/g);
console.log(result)

最佳答案

要根据您的输入实现您描述的结果,您应该 match针对这个正则表达式:

(?<=:)\D*

它使用回顾断言前一个字符是冒号 (:),然后捕获所有字符,直到下一个数字(或字符串结尾)。

const str = '0,0,5:hello0,1,5:js is fun!0,2,0:'
const result = str.match(/(?<=:)\D*/g);
console.log(result)

要捕获两个部分(冒号前后),您可以使用 matchAll :

const str = '0,0,5:hello0,1,5:js is fun!0,2,0:'
const result = [...str.matchAll(/([\d,]+):(\D*)/g)].map(a => a.slice(1));
console.log(result)

如果冒号后的文本还可以包含数字,则您需要更复杂的正则表达式,在第二组中使用前瞻性来停止匹配 \d,\d,\d 模式或行尾:

const str = '0,0,5:hello0,1,5:js is fun!0,2,0:1,0,2:22'
const result = [...str.matchAll(/(\d+,\d+,\d+):(.*?(?=\d+,\d+,\d+|$))/g)].map(a => a.slice(1));
console.log(result)

关于javascript - 无法根据正则表达式拆分字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66180755/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com