javascript 正实数 正则表达式

//以下在javascript中运行结果,可以F12在浏览器console中自行测试
(1)var RegexTest = /^[1-9]+\d*(\.\d*)?$|^0?\.\d*[1-9]\d*$/
(2)var RegexTest = /^[1-9]+\d*(\.\d*)?$|^0?\.\d*[1-9]\d*|^0+[1-9]\d*(\.\d*)?$/

RegexTest.test("1."); //true
RegexTest.test("1.0"); //true
RegexTest.test("1.10"); //true
RegexTest.test("10."); //true (经评论提醒已修改)
RegexTest.test("10.10"); //true
RegexTest.test(".1"); //true
RegexTest.test("0.001"); //true
RegexTest.test("0.010"); //true
RegexTest.test("0.10"); //true
RegexTest.test("0.101"); //true

RegexTest.test("01"); //false 这里有争议,有些后端语言对string类型0打头不能正确解析成数字,建议按非常规输入直接js中判断false处理
//如果一定要上面的判断为true,可以把正则最后的$改为 |^0+[1-9]\d*(\.\d*)?$,即(2) )
RegexTest.test("0.0"); //false
RegexTest.test("0."); //false
RegexTest.test("00."); //false (整数部分重叠0,且小于1的浮点数,在绝大多数后端语言中都无法解析成数字,只要特征吻合立刻判断为false,小数点后面是什么已经不重要了,如果一定有需求请自行修改正则)


解释:分割符"|",正实数指的是大于0得任意数,不包括0自身

(1)式分为左右两个部分 左侧判断大于1的正实数,右侧补充0到1之间的正实数

(2)式分为左中右三个部分 右侧补充0打头重复,大于1的正实数

对于结尾重复0不做处理,如:1.1000  、  0.10000  可通过验证 为1.1 、0.1

大于1时,如果有需要可以前面重复0:如 001  可通过验证 为1,参考正则(2)

以 . 开头,如:.1   可通过验证 为0.1

你可能感兴趣的:(javascript)