Simple regular expression for a decimal with a precision of 2
精度为2的十进制的正则表达式是什么?
有效实例:
1 2 3 4 5 6 | 123.12 2 56754 92929292929292.12 0.21 3.1 |
无效实例:
1 2 3 | 12.1232 2.23332 e666.76 |
小数点可以是可选的,整数也可以包括在内。
有效的regex令牌因实现而异。我所知道的最一般的形式是:
1 | [0-9]+(\.[0-9][0-9]?)? |
最紧凑的:
1 | \d+(\.\d{1,2})? |
两者都假定小数点之前和之后都必须有至少一个数字。
要要求整个字符串是此表单的一个数字,请将表达式包装在开始和结束标记中,例如(在Perl的表单中):
1 | ^\d+(\.\d{1,2})?$ |
添加:将小数部分包装在()中?使之成为可选的。请注意,这不包括"12"等表格,包括更像
补充:使用此格式
1 | ^[0-9]+(\.[0-9]{1,2})?$ |
由于正则表达式很难阅读,更不用说理解,下面是详细的等价物:
1 2 3 4 5 6 7 | ^ # 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 |
在大多数正则表达式实现(包括最常见的PCRE)中,可以用
另外,下面是我用来检查它的简单python脚本:
1 2 3 4 5 6 7 8 | 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 |
要包括可选的减号和不允许使用像
1 | -?(0|([1-9]\d*))(\.\d+)? |
对于没有千位分隔符的数字,我喜欢这个简单、紧凑的regex:
1 | \d+(\.\d{2})?|\.\d{2} |
或者,不限于2的精度:
1 | \d+(\.\d*)?|\.\d+ |
后者匹配一一百100。一百点七四一百点七零点七772
它不匹配空字符串(如d*)。d*W.)
1 | ^[0-9]+(\.([0-9]{1,2})?)?$ |
会让像
我用这个数字最多保留两位小数:
试试这个
1 | (\\+|-)?([0-9]+(\\.[0-9]+)) |
它也允许正负信号。
主回答错误,因为它使
此代码处理它(但在我的示例中,禁止使用负数):
1 | /^[0-9]+([.,][0-9]{1,2})?$/; |
结果如下:
true => "0" / true => "0.00" / true => "0.0" / true => "0,00" / true => "0,0" / true => "1,2"
true => "1.1"/ true => "1" / true => "100" true => "100.00"/ true => "100.0" / true =>
"1.11" / true => "1,11"/ false => "-5" / false => "-0.00" / true => "101" / false =>
"0.00.0" / true => "0.000" / true => "000.25" / false => ".25" / true => "100.01" /
true => "100.2" / true => "00" / false => "5." / false => "6," / true => "82" / true =>
"81,3" / true => "7" / true => "7.654"
1 | preg_match("/^-?\d+[\.]?\d\d$/", $sum) |
一般来说,即不限小数位数:
加上我的答案,有人可能会发现它是有用的,也可能是正确的我的。
1 2 3 4 5 6 7 | function getInteger(int){ var regx = /^[-+]?[\d.]+$/g; return regx.test(int); } alert(getInteger('-11.11')); |
这对我很有用:
1 | (-?[0-9]+(\.[0-9]+)?) |
第1组是你的浮点数,第2组只是分数。
你不需要考虑到
用
1 | (e|0-9)\d*\d.\d{1,2) |
我在我的项目中尝试了一个。这也允许使用带有
1 | /^(\+|-)?[0-9]{0,}((\.){1}[0-9]{1,}){0,1}$/ |
这将允许带求幂的十进制数和最多2位数字,
1 | ^[+-]?\d+(\.\d{2}([eE](-[1-9]([0-9]*)?|[+]?\d+))?)?$ |
演示
Chrome56不接受这种模式(Chrome56符合11.11)。另一个。)对于类型编号,使用类型作为文本作为进度。
1 2 3 4 5 6 7 8 9 10 | function DecimalNumberValidation() { var amounttext = ; if (!(/^[-+]?\d*\.?\d*$/.test(document.getElementById('txtRemittanceNumber').value))){ alert('Please enter only numbers into amount textbox.') } else { alert('Right Number'); } } |
函数将验证任何小数点是否有小数点,它会说"正确的数字"否则请只在"数量"文本框中输入数字。"警告消息将出现。
谢谢。。。:)