gpt4 book ai didi

javascript - typescript :正则表达式不匹配预期的模式

转载 作者:行者123 更新时间:2023-11-30 15:29:10 30 4
gpt4 key购买 nike

我在 typescript 函数中有以下正则表达式:

/([1-9][0-9]*)*?[d]([468]|(?!(22|32|42|52|62|72|82|92|102|200|202))([12][20]{1,2}))([rf!<>=][1-9][0-9]{1,2})*?/g

此正则表达式的目的是匹配骰子命令,类似于 roll20 处理其骰子命令的方式(例如 1d10!掷 1d10,如果它落在 10 上,它会掷出另一个 d10,依此类推)

前两组工作正常(我可以在我的应用程序中单独运行它并确认它们按预期工作)。

最后一组([rf!<>=][1-9][0-9]{1,2})*?不匹配,除非我添加 ^到正则表达式和 $ 的开头到最后。

作为附录,我确信有更有效的方法来编写此正则表达式 - 如果您对正则表达式本身有任何意见,我们也欢迎。

最佳答案

带有 *? 的惰性量化子模式正则表达式模式末尾永远不会匹配单个字符,它将始终匹配空字符串。

您需要将惰性量词替换为其贪婪量词以避免在此处添加 anchor ,([rf!<>=][1-9][0-9]{1,2})*? -> ([rf!<>=][1-9][0-9]{1,2})* .

关于javascript - typescript :正则表达式不匹配预期的模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42495173/

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