[英]regular expression for number and decimal points in javascript
我已经检查了以下链接的正则表达式
正则表达式应接受整数或小数点。 最大长度应为十进制前的10个数字和十进制后的4个数字。
从上面的链接(2位小数点)尝试了以下代码
\d{0,2}(\.\d{1,2})?
var patt =new RegExp("\d{0,2}(\.\d{1,2})?")
undefined
patt.test(1)
true
patt.test(1.1)
true
patt.test(11)
true
patt.test(111.111)
true
小数点后3位数也为真值,这是无效的。
您必须使用定界符来确定匹配的开始位置和结束位置。 而且您说max length should be 10 numbers before decimal and 4 digits after decimal
因此您的限制也不正确:
var patt = /^\d{1,10}(\.\d{1,4})?$/;
var patt = new RegExp(/^\\d{1,10}(\\.\\d{1,4})?$/); console.log( patt.test(1) ); // true console.log( patt.test(1.1) ); // true console.log( patt.test(11.11) ); // true console.log( patt.test(111.111) ); // true console.log( patt.test(1111.1111) ); // true console.log( patt.test(1111111111.1111) ); // true console.log( patt.test(111.11111) ); // false, because to long after decimal console.log( patt.test(11111111111.1111) ); // false, because to long before decimal
或如此处建议的那样,不使用RegExp
而是使用文字。 在某些浏览器中, RegExp
可能存在支持问题。 输出是相同的,因此最好使用以下解决方案:
var patt = /^\\d{1,10}(\\.\\d{1,4})?$/; console.log( patt.test(1) ); // true console.log( patt.test(1.1) ); // true console.log( patt.test(11.11) ); // true console.log( patt.test(111.111) ); // true console.log( patt.test(1111.1111) ); // true console.log( patt.test(1111111111.1111) ); // true console.log( patt.test(111.11111) ); // false, because to long after decimal console.log( patt.test(11111111111.1111) ); // false, because to long before decimal
正则表达式没有说字符串应该以最后一个字符结尾,也不应该以第一个字符开头。 尝试:
var patt = /^\d{1,2}(\.\d{1,2})?$/;
对于您要求之前的10位数字和要求之后的4位数字:
var patt = /^\d{1,10}(\.\d{1,4})?$/;
您为什么不检查一下:
input < Math.pow(10,10) && input % Math.pow(10,-4) == 0
这是对我有用的代码
function IsValidNumericCode(number,messageDiv,msg){
var reNumeric = /^\d*[0-9](|.\d*[0-9]|,\d*[0-9])?$/;
var result = reNumeric.test(number); if(!result){ messageDiv.html(msg);
messageDiv.fadeIn(400).fadeOut(400).fadeIn(400).fadeOut(400).fadeIn(400);
}else{ messageDiv.html('');} return result;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.