É àum caractere alfabético de acordo com a sua definição? Que linguagem você está usando?
Tim Pietzcker
2
uma string vazia deve corresponder?
ysth 20/05/11
Nope uma cadeia vazia não deve corresponder
Steffan Harris
Uma observação importante: você não indicou um idioma ou ferramenta em que deseja usar o regex que está solicitando. Embora os princípios das regexes sejam os mesmos universalmente, a sintaxe não está em todos os lugares. Você deve indicar onde deseja usá-lo.
Sergiol 20/05
Respostas:
186
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.
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
Em alguns dialetos, [Az] corresponderá aos valores de pontuação ASCII que ocorrem entre 'Z' e 'a', especificamente '[', '\', ']', '^', '-' e '', como bem como 'A' a 'Z' e 'a' a 'z'.
Lee
O que eu realmente queria é uma maneira de combinar minha string apenas quando ela tiver caracteres alfabéticos, se tiver um caracter não alfabético, não deverá corresponder.
Steffan Harris
7
@ Lee: Não alguns. Todos eles. Este regex está incorreto em seu estado atual.
Tim Pietzcker
7
\w is shorthand for A-Za-z- Não, realmente, \wé uma abreviação para[a-zA-Z0-9_]
anubhava
1
Bom ponto @ jpmc26. Eu editei minha resposta para remover meu erro original.
Anubhava
55
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 \wabreviaçã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 \wseguinte maneira:
\A[^\W\d_]+\z
\Acorresponde ao início da string, \zao 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).
à
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:
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:
Resultado:
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 entradaabcAbc^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:
Aqui,
\p{L}
corresponde a qualquer tipo de letra de qualquer idiomafonte
\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,
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
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).fonte
Isso corresponderá a um ou mais caracteres alfabéticos:
Você pode fazer distinção entre maiúsculas e minúsculas usando:
ou:
fonte
No Ruby e em outros idiomas que suportam classes de caracteres POSIX em expressões entre colchetes, você pode fazer simplesmente:
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
fonte
[^[:alpha]]
.[a-zA-Z]
deve fazer isso muito bem.Você pode fazer referência à folha de dicas .
fonte