Rak*_*khi 1 regex integer decimal range
我需要一个仅接受 1 到 9999.99 之间的整数或小数的正则表达式。我试过这个
^(?:[1-9][0-9]{0,4}(?:.d{1,2})?|9999|9999.99)$
Run Code Online (Sandbox Code Playgroud)
但它也接受 10000。
该模式存在一些问题:
[1-9][0-9]{0,4}可以匹配1-5位数字,因为量词是0-4次,所以它也可以匹配100009999|9999.99,因为那些已经可以匹配1-9][0-9]{0,4}.d匹配除换行符和后跟字符之外的任何字符d。您必须转义两者才能匹配字面上的点和单个数字更新后的模式如下所示:
^[1-9]\d{0,3}(?:\.\d{1,2})?$
Run Code Online (Sandbox Code Playgroud)
^字符串的开头[1-9]\d{0,3}匹配单个数字 1-9 并重复数字 0-9 0 到 3 次(?:\.\d{1,2})?可选择匹配 a.和 1 或 2 位数字$字符串结尾