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

时间:2016-08-25 06:46:55

标签: javascript regex

我已检查以下链接以获取正则表达式

Regex to match 2 digits, optional decimal, two digits

正则表达式应该接受整数或小数点。最大长度应为十进制前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位数也是真值,无效。

4 个答案:

答案 0 :(得分:4)

您必须使用分隔符来确定匹配的开始位置和结束位置。你说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




答案 1 :(得分:0)

正则表达式并没有说字符串应该以最后一个字符结尾,或者从第一个字符开始。 尝试:

var patt = /^\d{1,2}(\.\d{1,2})?$/;

对于您之前的10位数字和要求之后的4位数字:

var patt = /^\d{1,10}(\.\d{1,4})?$/;

答案 2 :(得分:0)

你为什么不检查:

 input < Math.pow(10,10) && input % Math.pow(10,-4) == 0

答案 3 :(得分:-1)

这是为我工作的代码

 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;