gpt4 book ai didi

regex - 匹配负/正 float/int 正则表达式 - 这是邪恶的吗?

转载 作者:行者123 更新时间:2023-12-02 18:06:33 30 4
gpt4 key购买 nike

我有这个正则表达式来测试用户输入是否有效:

value.length === 0 ||
value === '-' ||
(!isNaN(parseFloat(value)) && /^-?\d+\.?\d*$/.test(value))

要点在正则表达式中:/^-?\d+\.?\d*$/。然而,sonarcloud 认为它是一个安全热点,并表示:

确保此处使用的正则表达式(由于回溯而容易受到超线性运行时的影响)不会导致拒绝服务。

我猜这是因为两位数测试的原因,但我找不到办法避免它。它是安全威胁还是无害?

最佳答案

该警告是由两组数字之间的可选 . 引起的。这可能意味着正则表达式引擎将回溯以与 \d+ 匹配更少的数字,并与 \d* 匹配更多的数字,但总是得出相同的结论:它不匹配.

您可以通过以下方式避免这种情况:

^-?\d+(\.\d*)?$

这样,只有当存在分隔点时,\d* 模式才会发挥作用。这意味着相同的输入字符不可能被考虑用于 \d+ 模式,以及稍后(回溯之后)的 \d* 模式。

关于regex - 匹配负/正 float/int 正则表达式 - 这是邪恶的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73137567/

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