jquery expresiones regulares niegan letras

Estoy tratando de validar un campo de número de contacto, con eso no estoy permitiendo ninguna letra.

ARCHIVO JS

$(document).ready(function() {
    //var regex = /[^\d]/;
    var regex = /[^a-zA-Z]/;
    $('#contact_num').blur(function() {
        if(regex.test($(this).val()) == true) {
            alert('valid');
        } else {
            alert('invalid');
        }
    });
});​

ARCHIVO HTML

Contact Num: <input type="text" id="contact_num" />​

Mi expresión regular aquí parece volver válida si las letras vienen con los dígitos, que deben ser falsos.

DEMO


preguntado el 03 de mayo de 12 a las 17:05

2 Respuestas

Solo está marcando un solo carácter, aunque está muy cerca. Necesitas personajes de anclaje en el lateral.

var regex = /^[^a-zA-Z]+$/;

contestado el 03 de mayo de 12 a las 17:05

Gracias. por qué negar ^ afuera []? - planeta x

Fuera de los corchetes, ^ simboliza el comienzo de una cadena y $ significa el final de una cadena. Al delimitar nuestra expresión regular con esos caracteres, le decimos a la expresión regular que la cadena ENTERA debe caber en estos contenidos. - ben roux

Gracias por aclararlo. Aprendí algo nuevo. - planeta x

Si no permite solo letras sino cualquier otro carácter, debe invertir su expresión regular y su condición:

var regex = /[a-zA-Z]/;
...
if( !regex.test($(this).val()) ) {

http://jsfiddle.net/PYwLJ/3/

contestado el 03 de mayo de 12 a las 17:05

Gracias, no lo había pensado. Pienso en profundidad ^. :) - planeta x

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.