Eu queria saber se eu poderia obter uma expressão regular que corresponderá a uma string que possui apenas caracteres alfabéticos, e somente isso.
à
um caractere alfabético de acordo com a sua definição? Que linguagem você está usando?
Eu queria saber se eu poderia obter uma expressão regular que corresponderá a uma string que possui apenas caracteres alfabéticos, e somente isso.
à
um caractere alfabético de acordo com a sua definição? Que linguagem você está usando?
Respostas:
Você pode usar qualquer uma destas 2 variantes:
/^[A-Z]+$/i
/^[A-Za-z]+$/
para corresponder a uma sequência de entrada de alfabetos ASCII.
[A-Za-z]
corresponderá a todos os alfabetos (minúsculos e maiúsculos).^
e $
garantirá que apenas esses alfabetos sejam correspondidos.Código:
preg_match('/^[A-Z]+$/i', "abcAbc^Xyz", $m);
var_dump($m);
Resultado:
array(0) {
}
O caso de teste é para o comentário do OP que ele deseja corresponder apenas se houver 1 ou mais alfabetos presentes na entrada. Como você pode ver no caso de teste, as correspondências falharam porque havia ^
na sequência de entrada abcAbc^Xyz
.
Nota: Observe que a resposta acima corresponde apenas aos alfabetos ASCII e não aos caracteres Unicode. Se você deseja combinar letras Unicode, use:
/^\p{L}+$/u
Aqui, \p{L}
corresponde a qualquer tipo de letra de qualquer idioma
\w is shorthand for A-Za-z
- Não, realmente, \w
é uma abreviação para[a-zA-Z0-9_]
Se você precisar incluir caracteres alfabéticos não ASCII e se o seu sabor regex for compatível com Unicode,
\A\pL+\z
seria o regex correto.
Alguns mecanismos regex não suportam essa sintaxe Unicode, mas permitem que a \w
abreviação alfanumérica também corresponda a caracteres não ASCII. Nesse caso, você pode obter todos os alfabéticos subtraindo dígitos e sublinhados da \w
seguinte maneira:
\A[^\W\d_]+\z
\A
corresponde ao início da string, \z
ao final da string ( ^
e $
também corresponde ao início / fim das linhas em alguns idiomas, como Ruby, ou se certas opções de regex estiverem definidas).
Isso corresponderá a um ou mais caracteres alfabéticos:
/^[a-z]+$/
Você pode fazer distinção entre maiúsculas e minúsculas usando:
/^[a-z]+$/i
ou:
/^[a-zA-Z]+$/
No Ruby e em outros idiomas que suportam classes de caracteres POSIX em expressões entre colchetes, você pode fazer simplesmente:
/\A[[:alpha:]]+\z/i
Isso corresponderá aos caracteres alfabéticos em todos os idiomas do alfabeto Unicode. Mole-mole.
Mais informações: http://en.wikipedia.org/wiki/Regular_expression#Character_classes http://ruby-doc.org/core-2.0/Regexp.html
[^[:alpha]]
.
[a-zA-Z]
deve fazer isso muito bem.
Você pode fazer referência à folha de dicas .