首页 > 解决方案 > 正数的正则表达式,有两个浮点数,不前导零

问题描述

我需要为数字输入编写验证。
接受号码:
0,21
0
0,3
78,21
8934

不允许:
00
0,323
-1
021

标签: javascriptregex

解决方案


尝试模式^(?:0,\d\d?|[1-9]\d*(?:,\d\d?)?|0|)$

解释:

^- 匹配字符串的开头

(?:...)- 非捕获组

0,\d\d?- 逐字匹配0,,然后匹配一位或两位数字

|- 交替(右侧或左侧的匹配模式)

[1-9]\d*(?:,\d\d?)?- 匹配非零数字[1-9],然后匹配零个或多个数字\d*,然后可选(由于?末尾的运算符),\d\d?,所以逗号后跟一个或两个数字

00-从字面上匹配

(?:...|)- 交替中的最后一个选项匹配空字符串

$- 匹配字符串结尾

var myArray = ['0,21', '78,21', '8934', '', '00', '0,323', '-1', '021', '0,3', '1,3', '0'];
for(var i of myArray)
    console.log(`${i} matches: ${/^(?:0,\d\d?|[1-9]\d*(?:,\d\d?)?|0|)$/.test(i)}`);


推荐阅读