浮点正负的正则表达式和6位小数

时间:2013-04-09 14:43:37

标签: javascript regex floating-point decimal

我是regex的新手,我需要一个介于-180和180之间的数字的正则表达式或浮点数最多为6位小数

2 个答案:

答案 0 :(得分:1)

请注意,正则表达式无法验证该数字是否实际介于您给定的范围之间 - 应该由您的业务逻辑处理。

^-?\d{0,3}(\.\d{0,6})?$

读取数字可能是一个更好的解决方案,用JavaScript解析它并以这种方式验证它:

http://jsfiddle.net/4dqqh/

function isValid(numStr) {
    var float = parseFloat(numStr);
    return Math.abs(float) <= 180 && float.toFixed(6) - float == 0
}

console.log(isValid('-123.23323')); // true
console.log(isValid('-183.23323')); // false
console.log(isValid('-183.233233424')); // false

答案 1 :(得分:0)

您可以检查该值是否可以转换为所需范围和精度的数字,但正则表达式不是此工具。

function numbercheck180(s){
    var n= !isNaN(n= s*1e6)? Math.round(n)/1e6:-181;
    return (n<180 && n>-180 && n+''=== s)
}


numbercheck180('-179.123456')  true
numbercheck180('179.123456')  true
numbercheck180('179.1234561')  false
numbercheck180('-179.1234561')  false
numbercheck180('-181')  false
numbercheck180('180.00001')  false