小数点后两位的Javascript正则表达式模式
它应该接受 00.00, 0.0, 00.25, 00.36, 00.56,, 222.25, 222.25, 2222.25 不应该接受 000.25, 0000.25您可以使用此小数点后两位的Javascript正则表达式模式,javascript,regex,Javascript,Regex,它应该接受 00.00, 0.0, 00.25, 00.36, 00.56,, 222.25, 222.25, 2222.25 不应该接受 000.25, 0000.25您可以使用此 pattern = new RegExp('([0-9]+([.][0-9]{1,2})?|[.][0-9]{1,2})'); ^-字符串的开头 (?:(?!0{3,}.*)-在开始时避免超过2零的条件 \。\d+-匹配,后跟一个或多个数字 $-字符串结尾 使用以下方法: ^(?:(?!0{3,}).*)\.
pattern = new RegExp('([0-9]+([.][0-9]{1,2})?|[.][0-9]{1,2})');
-字符串的开头^
-在开始时避免超过(?:(?!0{3,}.*)
零的条件2
-匹配\。\d+
,后跟一个或多个数字
-字符串结尾$
^(?:(?!0{3,}).*)\.\d+$
说明:
在点\.
之前,它接受两个(\
)中的任何一个:
代码以0到9之间的任意数字开头^[0-9]
然后,1和9之间的数字可以任意多[1-9]+
代码最多以两个零开头^0{0,2}
^([0-9][1-9]+|0{0,2})\.[0-9]+$
(?
请注意锚定(?和(?!)
。如果您愿意,可以省略锚定,但锚定将使您的图案匹配,即使线条包含数字以外的噪声。(?坚持X
不在匹配之前。(!X)
坚持不在匹配之后
[如果您想坚持认为X
确实在前面和/或后面,那么您可以改为使用(?如果您的值不能以零开始,您可以使用:
这将符合:
^
字符串的开头
(?:
非捕获组
(?:
非捕获组
- `0{1,2}|[1-9]\d*匹配0 1-2次或数字1-9和0+次数字
)?
关闭捕获组并将其设置为可选
\.\d{1,2}
匹配一个点和1-2个数字
|
或
[1-9]\d*
匹配数字1-9,后跟数字的0+倍
)
关闭非捕获组
$
字符串的结尾
如果您确实希望允许前导零,可以在第二次替换之前添加匹配的0+乘以零0*
:
^(?:(?:0{1,2}|[1-9]\d*)?\.\d{1,2}|[1-9]\d*)$
它应该接受00222.25吗?它应该接受02.25吗?很有趣的是,堆栈溢出上的正则表达式问题如何促成了一场竞赛——一场竞赛,看谁能以最快的速度编写出匹配的正则表达式。这些问题中的大多数可能以某种方式重复,但我们无论如何都要竞赛,因为这很有趣。你将如何限制“.”之前的0的数量y[0-9]{1,2}|……
请注意0。您能描述允许接受/拒绝字符串的条件吗?字符串的格式应为00.00到5000.00。应接受0,0.0,00.00、.1,0.01,00.120125.254999.9950005000.00(最大长度为7,包括点[。])请help@MithunS那么你的意思是像这样?或者像这样@MithunS,你可以选择第一部分,如果你已经学会了这些东西?我在哪里可以学会这个复杂的东西?但是一个问题是我不能在角度反应式表单控制中设置这个模式:(例如,这是两个很棒的站点和
^(?:(?:0{1,2}|[1-9]\d*)?\.\d{1,2}|[1-9]\d*)$
^(?:(?:0{1,2}|0*[1-9]\d*)?\.\d{1,2}|[1-9]\d*)$