2014-11-23 3 views
0

Мне нужно регулярное выражение для значений, разделенных запятой, которые принимают положительное/отрицательное целое число, а также числа с плавающей запятой.Подтвердить запятые номера с положительными/отрицательными целыми числами и float

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

Как я могу получить? Благодаря

Мне нужно реализовать функцию, которая добавляет значения и возвращает результат, и он обнаруживает образец неправильного ввода таких цифр, разделенных дефисом

Ej: 3,45,2.5,12, -20 (Correct)

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

ответ

0

Основном дубликат 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

+0

Спасибо! Это для меня работа – user3653918

Смежные вопросы