繁体   English   中英

打字稿:正则表达式与预期模式不匹配

[英]Typescript: Regex not matching expected pattern

我在打字稿功能中有以下正则表达式:

/([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})*? 不匹配,除非我在正则表达式的开头添加^ ,在结尾添加$

作为附录,如果您对正则表达式本身有任何欢迎的输入,我敢肯定,有更有效的方式编写此正则表达式。

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

您需要用其贪婪的对等替换懒惰的量词,以避免在此处添加锚([rf!<>=][1-9][0-9]{1,2})*? -> ([rf!<>=][1-9][0-9]{1,2})*

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM