如何在以下条件下创建正则表达式

INF*_*SYS 0 javascript regex

数字输入不得超过8位(小数点两边的数字)。例如:123456.78或0.12或1.23

数值应能够接受负数。例如:-0.8或-1.23

最多2个十进制数

数值在输入框中不应包含任何字母缩写

我尝试创建以下正则表达式,但无法高效地解决

^-?[0-9]\d*(\.\d+)?[,8]$
Run Code Online (Sandbox Code Playgroud)

常规经验

Cer*_*nce 5

要匹配所需的位数而不是其他位数,请在模式的开头先行查找(?:\d\.?)1至8次,然后匹配\d*(?:\.\d{1,2})?$以匹配一个数字(如果包含小数,则最多包含2个小数字符):

^-?(?=(?:\d\.?){1,8}$)\d*(?:\.\d{1,2})?$
Run Code Online (Sandbox Code Playgroud)

https://regex101.com/r/rQMRVX/5

(除非您需要捕获小数部分,否则它可以像上面那样是一个非捕获组)