Me preguntaba si podría obtener una expresión regular que coincida con una cadena que solo tenga caracteres alfabéticos, y solo eso.
à
un carácter alfabético según su definición? Qué idioma estás usando?
Me preguntaba si podría obtener una expresión regular que coincida con una cadena que solo tenga caracteres alfabéticos, y solo eso.
à
un carácter alfabético según su definición? Qué idioma estás usando?
Respuestas:
Puede usar cualquiera de estas 2 variantes:
/^[A-Z]+$/i
/^[A-Za-z]+$/
para que coincida con una cadena de entrada de alfabetos ASCII.
[A-Za-z]
coincidirá con todos los alfabetos (minúsculas y mayúsculas).^
y $
se asegurará de que nada más que estos alfabetos coincidan.Código:
preg_match('/^[A-Z]+$/i', "abcAbc^Xyz", $m);
var_dump($m);
Salida:
array(0) {
}
El caso de prueba es para el comentario de OP de que quiere hacer coincidir solo si hay 1 o más alfabetos presentes en la entrada. Como puede ver en el caso de prueba, las coincidencias fallaron porque había ^
en la cadena de entrada abcAbc^Xyz
.
Nota: Tenga en cuenta que la respuesta anterior solo coincide con los alfabetos ASCII y no coincide con los caracteres Unicode. Si desea hacer coincidir letras Unicode, use:
/^\p{L}+$/u
Aquí, \p{L}
coincide con cualquier tipo de letra de cualquier idioma
\w is shorthand for A-Za-z
- en realidad no, \w
es la abreviatura de[a-zA-Z0-9_]
Si necesita incluir caracteres alfabéticos no ASCII, y si su sabor regex es compatible con Unicode, entonces
\A\pL+\z
Sería la expresión regular correcta.
Algunos motores de expresiones regulares no son compatibles con esta sintaxis Unicode pero permiten que la \w
taquigrafía alfanumérica también coincida con caracteres no ASCII. En ese caso, puede obtener todos los alfabéticos restando dígitos y guiones bajos de \w
esta manera:
\A[^\W\d_]+\z
\A
coincide al comienzo de la cadena, \z
al final de la cadena ( ^
y $
también coincide al inicio / final de las líneas en algunos idiomas como Ruby, o si se establecen ciertas opciones de expresiones regulares).
Esto coincidirá con uno o más caracteres alfabéticos:
/^[a-z]+$/
Puede hacerlo sin distinción entre mayúsculas y minúsculas utilizando:
/^[a-z]+$/i
o:
/^[a-zA-Z]+$/
En Ruby y otros idiomas que admiten clases de caracteres POSIX en expresiones de paréntesis, puede hacer simplemente:
/\A[[:alpha:]]+\z/i
Eso coincidirá con los caracteres alfabéticos en todos los idiomas del alfabeto Unicode. Pan comido.
Más información: http://en.wikipedia.org/wiki/Regular_expression#Character_classes http://ruby-doc.org/core-2.0/Regexp.html
[^[:alpha]]
.
[a-zA-Z]
debería hacerlo bien.
Puede hacer referencia a la hoja de trucos .