Regex 带0、1或2位小数的正十进制数的正则表达式
请帮我做一个带0、1或2位小数的正小数的正则表达式。它必须允许逗号和点。 例如,它必须允许:Regex 带0、1或2位小数的正十进制数的正则表达式,regex,Regex,请帮我做一个带0、1或2位小数的正小数的正则表达式。它必须允许逗号和点。 例如,它必须允许: 0,01 0.01 0,1 1 1.1 1,11 但不允许: -1 0.0 0,00 .01 0 1,111 1.111 我有这个 /(^\d*(?:\.\124;\,)?\ d*[1-9]+\d*$)。(^[1-9]+\d*(?:\.\124;\,)\ d*)/ 但我找不到如何禁止小数点后两位以上 更新 男人们,我必须拒绝0.0、0等等。你可以使用括号概念来限制位数: \d{0,2}表示从最小值0
0,01
0.01
0,1
1
1.1
1,11
但不允许:
-1
0.0
0,00
.01
0
1,111
1.111
我有这个
/(^\d*(?:\.\124;\,)?\ d*[1-9]+\d*$)。(^[1-9]+\d*(?:\.\124;\,)\ d*)/
但我找不到如何禁止小数点后两位以上
更新
男人们,我必须拒绝0.0、0等等。你可以使用括号概念来限制位数:
\d{0,2}表示从最小值0到最大值2的任何数字运行。您可以使用括号概念来限制位数:
\d{0,2}意味着从最小值0到最大值2的任何数字运行。编辑2:现在不允许精确的0,0.0等。
^(?!0*[.,]0*$|[.,]0*$|0*$)\d+[,.]?\d{0,2}$
这与小数点前至少一位匹配,后跟可选的小数点,后跟0-2位
负前瞻查找绝对零的任何味道并阻止匹配。
^(?!0*[.,]0*$|[.,]0*$|0*$)\d+[,.]?\d{0,2}$
这是原始正则表达式,因此您需要根据您的语言对其进行适当的转义。(例如,在某些语言中,您需要将\
斜杠加倍为\
)
/^(?!0*[.,]0*$|[.,]0*$|0*$)\d+[,.]?\d{0,2}$/
编辑2:现在完全不允许0,0.0等。
^(?!0*[.,]0*$|[.,]0*$|0*$)\d+[,.]?\d{0,2}$
这与小数点前至少一位匹配,后跟可选的小数点,后跟0-2位
负前瞻查找绝对零的任何味道并阻止匹配。
^(?!0*[.,]0*$|[.,]0*$|0*$)\d+[,.]?\d{0,2}$
这是原始正则表达式,因此您需要根据您的语言对其进行适当的转义(例如,在某些语言中,您需要将\
斜杠加倍为\
)
/^(?!0*[.,]0*$|[.,]0*$|0*$)\d+[,.]?\d{0,2}$/
到目前为止,你所得到的对我来说似乎不必要的复杂。就这样吧
/^\d+([.,]\d{0,2})?$/
这对于OP中的每个测试用例都是正确的,除了:
0.0
0,00
0
我不明白你为什么要拒绝这些。到目前为止,你所得到的对我来说似乎不必要的复杂。就这样吧
/^\d+([.,]\d{0,2})?$/
/^\d+([.,]\d{1,2})?$/
这对于OP中的每个测试用例都是正确的,除了:
0.0
0,00
0
我不明白你为什么要拒绝这些
/^\d+([.,]\d{1,2})?$/
这将正确地禁止这些“未格式化”数字.01
、3.
等
如果我们有零位小数,我们可能也不需要小数分隔符
这将正确地禁止这些“未格式化”数字.01
、3.
等
如果小数位数为零,我们可能也不需要小数分隔符。这将满足您的需要 我添加了空格、注释和括号来澄清:
( #
( 0*[1-9]\d* ) # a non-zero integer portion, followed by
( [\.,]\d{1,2} )? # an optional fraction of 1 or 2 decimal digits
) #
| # OR
( #
( 0+ ) # a zero integer portion, followed by
( # an mandatory non-zero 1-2 digit fraction, consisting of
[\.,] # a decimal point
( # followed by
( 0[1-9] ) # a 0 followed by a 1-9,
| # OR
( [1-9]\d? ) # a 1-9 followed by an optional decimal digit
)
)
正则表达式是次优的,当它在整数部分的零后面找不到非零数字时,0000000000.01之类的东西将回溯,但它应该可以工作。这将满足您的需要 我添加了空格、注释和括号来澄清:
( #
( 0*[1-9]\d* ) # a non-zero integer portion, followed by
( [\.,]\d{1,2} )? # an optional fraction of 1 or 2 decimal digits
) #
| # OR
( #
( 0+ ) # a zero integer portion, followed by
( # an mandatory non-zero 1-2 digit fraction, consisting of
[\.,] # a decimal point
( # followed by
( 0[1-9] ) # a 0 followed by a 1-9,
| # OR
( [1-9]\d? ) # a 1-9 followed by an optional decimal digit
)
)
正则表达式是次优的,比如0000000000.01,当它在整数部分的零后面找不到一个非零数字时,它会回溯,但它应该可以工作。我将在jQuery自定义验证方法中使用它,javascript也是如此。我将在jQuery自定义验证方法中使用它,javascript也是如此。就其本身而言,
0.123456
中的12
(它也匹配34
和56
)本身,\d{0,2}
错误地匹配字符串0.123456
中的12
(它还匹配34
和56
)谢谢你!它比其他的更接近,但它仍然允许0。我能让它像这样拒绝“00”,“000”等等吗?这个正则表达式非常可靠。谢谢你!谢谢你!它比其他的更接近,但它仍然允许0。我能让它像这样拒绝“00”,“000”吗等等?这个正则表达式非常可靠。谢谢你!我刚刚意识到我上面的正则表达式将接受0 w/o一个分数。修复了!我刚刚意识到我上面的正则表达式将接受0 w/o一个分数。修复了!这就是这里的问题,它不应该允许这些0
0,0
etcExactly,这就是这里的问题,它不应该允许这些 0
0,0
等