繁体   English   中英

javascript中数字和小数点的正则表达式

[英]regular expression for number and decimal points in javascript

我已经检查了以下链接的正则表达式

正则表达式匹配2位数字,可选十进制,两位数字

正则表达式应接受整数或小数点。 最大长度应为十进制前的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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM