2014-11-23 38 views
0

我需要一个逗号分隔值的正则表达式,接受正/负整数和浮点数。验证逗号分隔的数字与正/负整数和浮点数

Ej:3,45,2.5,12,-20

我该如何得到它?由于

我需要实现的功能,增加值,并返回结果,并检测用连字符

EJ分离不正确的条目,例如数字模式:3,45,2.5,12,-20(正确)

EJ:3-45-2.5-12-20(错误)

,但我不明白,我的代码有:

<html> 
<head> 
<script type="text/javascript"> 
function validar() 
{ 
var patron = /^(-?\d*\.?\d*,?)+$/;       
var numeros = document.getElementById("numeros").value; 

if (!patron.test(numeros)) 
{   
    alert("Introduzca los números que desee sumar separados por comas, Ej: 3,3.25,-1");      
} 
else 
{ 
    suma();  
} 
} 

function suma() 
{ 
var entrada = document.getElementById("numeros").value; 
var numeros = entrada.split(","); 
var suma = 0; 

for(var i = 0; i < numeros.length; i++) 
    { 
     suma += parseFloat(numeros[i]); 
    } 
document.getElementById("resultado").value = suma; 
}  
</script> 
</head> 
<body> 
Números: <input type="text" id="numeros" size="30"> 
Resultado: <input type="text" id="resultado" size="20"> 
<input type="button" value="SUMAR" onClick="validar()"> 
</body> 
</html> 
+0

什么是不工作? – dusky 2014-11-23 19:13:38

回答

0

Basicly一个的this重复nd this

"3,45,2.5,12,-20".split(",").every( 
    function(x) { return /^-?\d*\.?\d*$/.test(x); } 
); 

或者单正则表达式

/^(-?\d*\.?\d*)(,-?\d*\.?\d*)*$/.test("3,45,2.5,12,-20") 

有点重构之后,您将获得

<html> 
<head> 
<title>JS Números</title> 
</head> 

<body> 
Números: <input type="text" id="numeros" size="30"> 
Resultado: <input type="text" id="resultado" size="20"> 
<input type="button" value="SUMAR" onClick="suma()"> 

<script type="text/javascript"> 
var numberElement = document.getElementById("numeros"); 
var resultElement = document.getElementById("resultado"); 
var numberPattern = /^(-?\d*\.?\d*)(,-?\d*\.?\d*)*$/; 

function suma() { 
    var numberString = numberElement.value; 
    if (numberPattern.test(numberString)) { 
     var sum = numberString.split(",").reduce(function(m,v) { return m + parseFloat(v); }, 0); 
     resultElement.value = sum; 
    } else { 
     alert("Introduzca los números que desee sumar separados por comas, Ej: 3,3.25,-1"); 
     resultElement.value = ""; 
    } 
}  
</script> 
</body> 
</html> 
+0

感谢您的回复,我编辑我的帖子来解释我需要的东西 – user3653918 2014-11-23 16:25:22

+0

谢谢!这对我有用 – user3653918 2014-11-23 20:37:18

相关问题