2011-10-30 51 views
6

Tengo un cuadro de texto, puede tener valores como 1 o 1,2 o 1,225,345,21 es decir, valores múltiples. Pero ahora quiero validar esta entrada.RegEx para la validación de JavaScript de los números separados por comas

toString().match(/^(([0-9](,)?)*)+$/) 

Este es el código que estoy usando. Se está validando correcta sólo, pero un problema cuando el usuario introduce los valores de la siguiente manera:

inputval:1,22,34,25,645(true) 
inputval:1,22,34,25,645,(falues) 

Cuando el usuario entra en coma (,) cuya última se debe lanzar un error.

¿Alguien me puede ayudar, por favor?

Respuesta

21

basta con incluir manualmente al menos una:

/^[0-9]+(,[0-9]+)*$/ 
2

variantes en expresiones regulares del Ariel :-)

/^(([0-9]+)(,(?=[0-9]))?)+$/ 

El , debe ser seguido por un dígito (?=[0-9]).

O

/^(([0-9]+)(,(?!$))?)+$/ 

El , no debe ser seguido por el final de la cadena (?!$).

/^(?!,)(,?[0-9]+)+$/ 

Comprobamos que el primer carácter no es un ,(?!,) y luego ponemos la , opcional antes de los dígitos. Es opcional porque el primer bloque de dígitos no lo necesita.

+0

Dejaría caer el patrón '(x + y?) +' Por completo, esto lleva fácilmente a [backtracking catastrófico] (http://www.regular-expressions.info/catastrophic.html). – Kobi

+0

@Kobi Como siempre, lo que puedes hacer y lo que debes hacer con las expresiones regulares es bastante diferente :-) – xanatos

Cuestiones relacionadas