精度为2的小数的正则表达式是什么?
有效示例:
123.12
2
56754
92929292929292.12
0.21
3.1
示例无效:
12.1232
2.23332
e666.76
小数点可以是可选的,也可以包含整数。
答案 0 :(得分:370)
有效的正则表达式令牌因实现而异。我所知道的最通用的形式是:
[0-9]+(\.[0-9][0-9]?)?
最紧凑:
\d+(\.\d{1,2})?
两者都假设您必须在小数位之前和小数位之前至少有一位数。
要求整个字符串是此表单的数字,请将表达式包装在start和end标记中,例如(以Perl的形式):
^\d+(\.\d{1,2})?$
已添加:在()中包含小数部分?使它成为可选的。请注意,这不包括“12”等形式。包括那将更像^\d+\.?\d{0,2}$
。
<强>加了:强>
使用此格式^\d{1,6}(\.\d{1,2})?$
可以停止重复,并对小数值的整个部分进行限制。
答案 1 :(得分:250)
^[0-9]+(\.[0-9]{1,2})?$
由于正则表达式读起来很糟糕,更不用说了解,这里是详细的等价物:
^ # Start of string
[0-9]+ # Require one or more numbers
( # Begin optional group
\. # Point must be escaped or it is treated as "any character"
[0-9]{1,2} # One or two numbers
)? # End group--signify that it's optional with "?"
$ # End of string
在大多数正则表达式实现中,您可以将[0-9]
替换为\d
(包括最常见的PCRE)。我把它保留为[0-9]
因为我觉得它更容易阅读。
此外,这是我用来检查它的简单Python脚本:
import re
deci_num_checker = re.compile(r"""^[0-9]+(\.[0-9]{1,2})?$""")
valid = ["123.12", "2", "56754", "92929292929292.12", "0.21", "3.1"]
invalid = ["12.1232", "2.23332", "e666.76"]
assert len([deci_num_checker.match(x) != None for x in valid]) == len(valid)
assert [deci_num_checker.match(x) == None for x in invalid].count(False) == 0
答案 2 :(得分:19)
要包含可选的减号并禁止015
之类的数字(可能被误认为是八进制数字),请写:
-?(0|([1-9]\d*))(\.\d+)?
答案 3 :(得分:13)
对于没有千位分隔符的数字,我喜欢这个简单,紧凑的正则表达式:
\d+(\.\d{2})?|\.\d{2}
或者,不限于2的精度:
\d+(\.\d*)?|\.\d+
后者匹配
1
100个
100.
100.74
100.7
0.7
0.7
0.72
它与空字符串不匹配(如\ d *。?\ d * will)
答案 4 :(得分:7)
我使用这个最多两位小数:
(^(\+|\-)(0|([1-9][0-9]*))(\.[0-9]{1,2})?$)|(^(0{0,1}|([1-9][0-9]*))(\.[0-9]{1,2})?$)
经过:
0.25
0.25
10.25
+0.25
不通过:
-.25
01.25
1.
1.256
答案 5 :(得分:7)
^[0-9]+(\.([0-9]{1,2})?)?$
会接受12.
之类的内容。这不是普遍接受的,但如果你需要“灵活”,这是一种可行的方法。当然[0-9]
可以替换为\d
,但我想这样更具可读性。
答案 6 :(得分:5)
试试这个
(\\+|-)?([0-9]+(\\.[0-9]+))
它也会允许正面和负面的迹象。
答案 7 :(得分:3)
主要答案是错误的,因为它有效5.
或5,
输入
此代码处理它(但在我的示例中禁止使用负数):
/^[0-9]+([.,][0-9]{1,2})?$/;
结果如下:
true =&gt; &#34; 0&#34; / true =&gt; &#34; 0.00&#34; / true =&gt; &#34; 0.0&#34; / true =&gt; &#34; 0,00&#34; / true =&gt; &#34; 0,0&#34; / true =&gt; &#34; 1,2&#34; true =&gt; &#34; 1.1&#34; / true =&gt; &#34; 1&#34; / true =&gt; &#34; 100&#34; true =&gt; &#34; 100.00&#34; / true =&gt; &#34; 100.0&#34; / true =&gt; &#34; 1.11&#34; / true =&gt; &#34; 1,11&#34; / false =&gt; &#34; -5&#34; / false =&gt; &#34; -0.00&#34; / true =&gt; &#34; 101&#34; / false =&gt; &#34; 0.00.0&#34; / true =&gt; &#34; 0.000&#34; / true =&gt; &#34; 000.25&#34; / false =&gt; &#34; 0.25&#34; / true =&gt; &#34; 100.01&#34; / true =&gt; &#34; 100.2&#34; / true =&gt; &#34; 00&#34; / false =&gt; &#34; 5&#34。 / false =&gt; &#34; 6&#34; / true =&gt; &#34; 82&#34; / true =&gt; &#34; 81,3&#34; / true =&gt; &#34; 7&#34; / true =&gt; &#34; 7.654&#34;
答案 8 :(得分:2)
preg_match("/^-?\d+[\.]?\d\d$/", $sum)
答案 9 :(得分:2)
一般情况下,即无限小数位:
^-?(([1-9]\d*)|0)(.0*[1-9](0*[1-9])*)?$
。
答案 10 :(得分:1)
您是否需要考虑e
中的e666.76
?
使用
(e|0-9)\d*\d.\d{1,2)
答案 11 :(得分:1)
这对我有用:
(-?[0-9]+(\.[0-9]+)?)
第1组是您的浮动数,而第2组是仅限部分。
答案 12 :(得分:1)
添加我的答案,有人可能觉得它很有用,或者也可能是正确的。
function getInteger(int){
var regx = /^[-+]?[\d.]+$/g;
return regx.test(int);
}
alert(getInteger('-11.11'));
答案 13 :(得分:1)
我用我的项目尝试了一个。
这允许带有+ | -
符号的数字。
/^(\+|-)?[0-9]{0,}((\.){1}[0-9]{1,}){0,1}$/
答案 14 :(得分:0)
Chrome 56不接受这种模式(Chrome 56正在接受11.11。附加。),类型编号,使用类型作为文本作为进度。
答案 15 :(得分:0)
答案 16 :(得分:-1)
function DecimalNumberValidation() {
var amounttext = ;
if (!(/^[-+]?\d*\.?\d*$/.test(document.getElementById('txtRemittanceNumber').value))){
alert('Please enter only numbers into amount textbox.')
}
else
{
alert('Right Number');
}
}
函数将验证任何十进制数字天气数字是否有小数位,它会说“正确数字”其他明智的“请输入数字到数量文本框”。警报信息会出现。
谢谢...:)