JavaScript中的正则表达式用于csv类型的字符串匹配

cnh2zyt3  于 2023-03-28  发布在  Java
关注(0)|答案(1)|浏览(69)

我有一个使用regex验证输入的要求。要求是以元组(a,B,c)或多于3个元组(a,b,c,d)的形式匹配字符串,白色可以出现在字符串边界之前/之后,如下所示:

test
test,t1
 t1 , t2 
 a
 a,b

我用这个正则表达式:

\s*(\w+\s*,\s*)*\s*\w+\s*

匹配工作正常,但攻击字符串'\t'. repeat(1651)+ '\t'. repeat(1651)+ ',0'有polynomial complexity
有什么建议可以使它安全/线性。尝试了前瞻方法和懒惰的量词,但不能得到正确的?
谢谢

mlnl4t2r

mlnl4t2r1#

这似乎是最简单的解决方案:

(\s*\w+\s*,?)*

模式为:任何空格,后跟一个或多个单词,后跟任何空格,后跟一个或零个逗号。该模式可以出现0次或多次。
那个网站说这是线性的,安全的。
这将做与您提供的正则表达式相同的事情,除了它允许尾随逗号并且还匹配空字符串。
如果这还不能满足您的需要,那么请提供更详细的描述和更多的示例,说明什么应该通过或失败的验证。

相关问题