输入类型的正则表达式 = "number"阻止输入加字符



我有一个Regex用于验证输入类型="数字";但是我的regex允许输入加号的问题,如何防止输入加号,但允许输入减号?例如,您可以输入:123;11,22-33-33.44,但不允许输入+123和-0,+0

const deprecatedKeys = /^-+?D$|^decimal$|^multiply$|^add$|^divide$|^subtract$|^spacebar$/i;

当前模式的第一部分有问题:^-+?D$当前将匹配一个介于一次和无限次之间但尽可能少的连字符和一个非数字字符。所以像"-----+"或"-X"这样的东西也会匹配。

如果你想允许一个可选的前导连字符和可选的小数,你可以使用:

^(?!-0$)-?d+(?:[.,]d+)?$

此外,所有这些备选方案都可以分组在一个非捕获组中,该组具有一个前导和尾随锚:

^(?:(?!-0$)-?d+(?:[.,]d+)?|decimal|multiply|add|divide|subtract|spacebar)$

最新更新