我正在尝试为JS做一个正则表达式。下面是输入
blah PREFIX hello SUFFIX blah
blah PREFIX PREFIX SUFFIX blah
blah PREFIX SUFFIX SUFFIX blah
blah PREFIX var+2 SUFFIX blah
正则表达式应该返回序列的第一个组/索引
PREFIX hello SUFFIX
PREFIX PREFIX SUFFIX
PREFIX SUFFIX SUFFIX
PREFIX var+2 SUFFIX
注意:前缀和后缀是固定的。在这些单词之间,我们可以有任何数量的单词。
我想出了这个正则表达式
(PREFIX(?=(?<spaces>[\s\S]+SUFFIX))\k<spaces>)
但这一个被报告为polynomial
https://regex101.com/r/YCbU0f/1有攻击字符串,这会导致更多的回溯..我们可以从满足上述要求的工具中使其安全吗?
1条答案
按热度按时间okxuctiv1#
回溯速度慢,容易受到攻击字符串的攻击
你有没有考虑过一种更简单的方法,让你摆脱正则表达式的漏洞?你正在尝试做的是从根本上简单,所以适合基本操作,没有复杂的正则表达式?