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

问题描述 投票:0回答:1

我需要使用 regex 验证输入。 要求是匹配元组 (a,b,c) 或超过 3 个 (a,b,c,d,) 形式的字符串,但空格可以出现在字符串边界之前/之后 如下所示:

test
test,t1
 t1 , t2 
 a
 a,b

我带着这个正则表达式来了:

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

匹配工作正常,但它具有 多项式复杂性 攻击字符串 ' '.repeat(1651) + ' '.repeat(1651) + ',0'

任何使其安全/线性的建议。尝试了前瞻方法和惰性量词但无法正确使用?

谢谢..

javascript regex backtracking
1个回答
0
投票

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

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

模式是:任何空格,后跟一个或多个单词,后跟任何空格,后跟一个或零个逗号。该模式可能出现 0 次或多次。

那个网站说这是线性和安全的。

然而,这并没有真正验证任何东西,只是匹配可能用逗号分隔的单词组,就像您提供的正则表达式一样。

如果您需要其他内容,则需要更具描述性。

© www.soinside.com 2019 - 2024. All rights reserved.