2014-11-23 52 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