¿Es àun carácter alfabético según su definición? Qué idioma estás usando?
Tim Pietzcker
2
¿Debería coincidir una cadena vacía?
2011
pues una cadena vacía no debe coincidir
Steffan Harris
Una nota importante: no mencionó un idioma o herramienta donde desea utilizar la expresión regular que está solicitando. Aunque los principios de las expresiones regulares son los mismos universalmente, la sintaxis no es igual en todas partes. Debe consultar dónde desea usarlo.
sergiol
Respuestas:
186
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.
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
En algunos dialectos, [Az] coincidirá con los valores de puntuación ASCII que ocurren entre 'Z' y 'a', específicamente '[', '\', ']', '^', '-' y '' ', como así como 'A' hasta 'Z' y 'a' hasta 'z'.
Lee
Lo que realmente quería es una forma de hacer coincidir mi cadena solo cuando tiene caracteres alfabéticos, si tiene un carácter no alfabético, no debería coincidir.
Steffan Harris
77
@Lee: No algunos. Todos ellos. Esta expresión regular es incorrecta en su estado actual.
Tim Pietzcker
77
\w is shorthand for A-Za-z- en realidad no, \wes la abreviatura de[a-zA-Z0-9_]
anubhava
1
Buen punto @ jpmc26. He editado mi respuesta para eliminar mi error original.
anubhava
55
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 \wtaquigrafí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 \westa manera:
\A[^\W\d_]+\z
\Acoincide al comienzo de la cadena, \zal 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).
+1 por no considerar el alfabeto inglés como el único alfabeto
srcspider
77
+1, igual que el anterior. el inglés no es el único alfabeto y muchas personas escriben su nombre usando caracteres que no son ascii para expresarlo correctamente.
Ben Barkay
22
Esto coincidirá con uno o más caracteres alfabéticos:
/^[a-z]+$/
Puede hacerlo sin distinción entre mayúsculas y minúsculas utilizando:
à
un carácter alfabético según su definición? Qué idioma estás usando?Respuestas:
Puede usar cualquiera de estas 2 variantes:
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:
Salida:
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 entradaabcAbc^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:
Aquí,
\p{L}
coincide con cualquier tipo de letra de cualquier idiomafuente
\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
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
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).fuente
Esto coincidirá con uno o más caracteres alfabéticos:
Puede hacerlo sin distinción entre mayúsculas y minúsculas utilizando:
o:
fuente
En Ruby y otros idiomas que admiten clases de caracteres POSIX en expresiones de paréntesis, puede hacer simplemente:
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
fuente
[^[:alpha]]
.[a-zA-Z]
debería hacerlo bien.Puede hacer referencia a la hoja de trucos .
fuente