Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 正则表达式表示正数,带两个浮点数,不前导零_Javascript_Regex - Fatal编程技术网

Javascript 正则表达式表示正数,带两个浮点数,不前导零

Javascript 正则表达式表示正数,带两个浮点数,不前导零,javascript,regex,Javascript,Regex,我需要为数字输入编写验证。 接受的号码: 0,21 0 0,3 78,21 8934 不允许: 00 0323 -1 021尝试模式^(:0,\d\d?|[1-9]\d*(?:,\d\d?|?| 0 |))$ 说明: ^-匹配字符串的开头 (?:…)-非捕获组 0\d\d?-逐字匹配0,,然后匹配一个或两个数字 |-交替(匹配右侧或左侧的图案) [1-9]\d*(?:,\d\d?-匹配非零数字[1-9],然后匹配零个或多个数字\d*,然后可选地(由于末尾的?运算符),\d\d?,所以逗号后跟一个

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

不允许:
00
0323
-1
021

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

说明:

^
-匹配字符串的开头

(?:…)
-非捕获组

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

|
-交替(匹配右侧或左侧的图案)

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

0
-按字面意思匹配
0

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

$
-匹配字符串的结尾

var myArray=['0,21','78,21','8934','00','0323','1','021','0,3','1,3','0'];
for(myArray的变量i)

log(`${i}匹配:${/^(?:0,d\d?|[1-9]\d*(?:,\d\d?)$/.test(i)})这里有一个比regex更可扩展的方法

const-okNum=[“0,21”、“78,21”、“8934”和“]
常数notOk=[“00”,“0323”,“-1”,“021”]
常数validNum=str=>{
if(str.trim()==“”){console.log(str,“empty-ok,passed”);返回true;}
常量num=str.replace(“,”,“)
设testNum=parseFloat(num)
if(testNum validNum(num))

notOk.map(num=>validNum(num))
请包括一个问题。我想你已经尝试过实际编写验证了吗?有什么问题/没有按预期工作吗?请看一个带an的问题。另外,关于这个主题,可能会有一大堆关于SO的旧帖子。这几乎是,但我也需要接受0,2.0,3.0,5。我需要接受0。@Waldemar纠正了这一点,请参阅updateE