2010-06-18 28 views
15

Pregunta rápida: Necesito permitir que una entrada solo acepte letras, de la az y de la A a la Z, pero no puedo encontrar ninguna expresión para eso. Quiero usar el método javascript test().javascript regex: solo letras inglesas permitidas

+0

What the world fue hace tres años – rook

Respuesta

39
/^[a-zA-Z]+$/.test('sfjd') 

Nota: Si tiene algún signo de puntuación o algo así, todos son también inválidos. Los guiones y los guiones bajos no son válidos. \w cubre a-zA-Z y algunos otros caracteres de palabras. Todo depende de lo que necesites específicamente.

+0

¿sabes si hay mucha diferencia entre regex.test (string) y string.match (regex)? –

+0

hmm parece que me faltaban solo las etiquetas de inicio y fin, ¡gracias! – yoda

+1

¿qué hay de las letras de otros idiomas? – vsync

5

Otra opción es usar el case-insensitive flag i, entonces no hay necesidad del rango de caracteres extra A-Z.

var reg = /^[a-z]+$/i; 
console.log(reg.test("somethingELSE")); //true 
console.log("somethingELSE".match(reg)[0]); //"somethingELSE" 

Aquí hay una DEMO sobre cómo esto funciona con expresiones regulares test() y fósforo().

+0

Solo para aclarar, ¿esta expresión devolverá nulo cuando haya algún otro carácter, por ejemplo, '&' presente? SI solo hay letras en inglés, ¿devolverá la entrada en sí? – MadPhysicist

+1

@MadPhysicist TLDR; Sí. Explicación: Usar 'string.match (regex)' devolverá nulo si no hay coincidencias, de lo contrario, devuelve una matriz de cadenas coincidentes. Como esta expresión regular hace coincidir todo desde el comienzo de la cadena ('^') hasta el final de la cadena ('$'), una coincidencia() aquí devolverá toda la cadena o nulo. Vea mi [DEMO] (https://jsfiddle.net/shawn1/ebuno94c/) arriba para los usos de 'regex.test (string)' o 'string.match (regex)'. –

+1

@MadPhysicist aclaración: match() aquí realmente devuelve una matriz con toda la cadena en el índice cero. –

-2

Si no te importa estos caracteres especiales ("[", "\", "]", "^", "_", "`"), también se puede hacer:

/^[A-z]+$/.test('string') 

var matches = [], special = []; 
 

 
// Test ASCII characters (0-255) 
 
for (var i=0,n=255; i < n; i++){ 
 
    var char = String.fromCharCode(i); // get character 
 
    
 
    if (/[A-z]/.test(char)){ 
 
    matches.push(char); 
 
    if (!/[a-zA-Z]/.test(char)) 
 
     special.push(char); 
 
    } 
 
} 
 

 

 
console.log('matches: ', matches); 
 
console.log('special characters: ', special);

Deja un comentario si usted no ve la !/[a-zA-Z]/.test(char) , necesita saber a quién quitar de la asistencia en el futuro;)

+0

Me encantaría que quien votó negativamente explicara por qué. Solo puedo suponer que no leyeron la respuesta ni ejecutaron el fragmento? Quizás la respuesta sea incorrecta y se elimine, sin más explicaciones nadie sabe por qué. Por favor explica el DV. – vol7ron

+0

Lo que quiero decir con esto es '\ w' mencionado en la pregunta de respuesta, que incluye ciertos caracteres no alfa. Si eso es aceptable, este rango también puede ser aceptable. – vol7ron

+0

Bajé la votación porque su solución contradice directamente el * "solo acepta letras, de la A a la Z y de la A a la Z" * requisito y no parece agregar nada a la respuesta aceptada – geg

Cuestiones relacionadas