2008-12-05 18 views
72

En jQuery, ¿hay una función/complemento que pueda usar para hacer coincidir una expresión regular dada en una cadena?Validación de campo de expresión regular en jQuery

Por ejemplo, en un cuadro de entrada de correo electrónico, obtengo una dirección de correo electrónico, y quiero ver si está en el formato correcto. ¿Qué función jQuery debería usar para ver si mi expresión regular validada coincide con la entrada?

He buscado una solución en Google, pero no he podido encontrar nada.

+1

El título de esta pregunta es un poco engañoso. Tal vez debería estar mejor calificado para indicar que esto tiene que ver con la coincidencia de valores de entrada de formulario. Di +1 a la respuesta de Nickf, porque eso es lo que estaba buscando. – mydoghasworms

Respuesta

26

Creo que esto lo hace:

http://bassistance.de/jquery-plugins/jquery-plugin-validation/

que tiene patrones incorporados para cosas como las direcciones URL y direcciones de correo electrónico, y creo que se puede tener usar su propia también.

+1

Pero ¿qué pasa con la coincidencia de expresiones regulares generales? Tal vez algo como buscar una expresión regular en algún texto, etc. –

+12

Bueno, quiero decir que siempre puedes usar la expresión regular de JavaScript directamente, si eso es todo lo que necesitas hacer ... http://www.regular-expressions.info/javascript .html –

+7

¿Soy solo yo o JQUERY tiene un sitio web horrible? No puedo encontrar fácilmente cómo usar o descargar esta cosa. – Jason

26

A menos que esté buscando algo específico, ya puede hacer la coincidencia de expresión regular utilizando Javascript regular con cadenas.

Por ejemplo, se puede hacer juego utilizando una cadena por algo como esto ...

var phrase = "This is a phrase"; 
phrase = phrase.replace(/is/i, "is not"); 
alert(phrase); 

¿Hay algo que está buscando que no sea sólo de expresiones regulares en general?

+27

Su ejemplo mostrará "¡Esto no es una frase"! :-) –

+7

Captura divertida: nunca ejecuté el código, pero tienes razón. Coincide con el primer 'es', que en realidad está al final de la palabra 'Esto'. Dado que ignora el resto de la cadena, no lo hace. 'hacer algo para el segundo' es '. Muy gracioso :) – Hugoware

+0

-1 para [no es suficiente jQuery] (http://meta.stackexchange.com/a/48195/156615) ... ... ... vale, es broma, de hecho voté tu respuesta:) – brandizzi

82

Si desea buscar algunos elementos basados ​​en una expresión regular, puede usar la función filter. Por ejemplo, supongamos que quiere asegurarse de que en todos los cuadros de entrada, el usuario solo haya ingresado números, así que busquemos todas las entradas que no coincidan y resaltelas.

$("input:text") 
    .filter(function() { 
     return this.value.match(/[^\d]/); 
    }) 
    .addClass("inputError") 
; 

Por supuesto, si era sólo algo como esto, se podía usar el plugin de validación de formularios, pero este método podría aplicarse a cualquier tipo de elementos que le gustan. Otro ejemplo para mostrar lo que quiero decir: encontrar todos los elementos cuya id partidos /[a-z]+_\d+/

$("[id]").filter(function() { 
    return this.id.match(/[a-z]+_\d+/); 
}); 
29

estoy usando jQuery y JavaScript y funciona bien para mí:

var rege = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/; 
if(rege.test($('#uemail').val())){ //do something } 
+5

Además, el suyo no reconoce tener un '+' en su dirección de correo electrónico: var rege = /^([A-Za-z0-9_\+\-\.])+\@([A-Za -z0-9 _ \ - \.]) + \. ([A-Za-z] {2,4}) $ /; No digo que el mío sea perfecto, solo digo que el tuyo no funciona para mi correo electrónico :-) – keif

2

Mi código:

$("input.numeric").keypress(function(e) { /* pour les champs qui ne prennent que du numeric en entrée */   
      var key = e.charCode || e.keyCode || 0;      
      var keychar = String.fromCharCode(key); 
      /*alert("keychar:"+keychar + " \n charCode:" + e.charCode + " \n key:" +key);*/ 
      if ( ((key == 8 || key == 9 || key == 46 || key == 35 || key == 36 || (key >= 37 && key <= 40)) && e.charCode==0) /* backspace, end, begin, top, bottom, right, left, del, tab */ 
        || (key >= 48 && key <= 57)) { /* 0-9 */ 
       return; 
      } else { 
       e.preventDefault(); 
      } 
     }); 
+3

Esto no está usando una expresión regular –

-1

De jquery.validate.js (por joern), contribuido por Scott Gonzalez: http://projects.scottsplayground.com/email_address_validation/

/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i 

Asegúrese de doblar la @@ si está utilizando MVC Razor:

/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i 

Hambre de espaguetis?

Cuestiones relacionadas