ti-enxame.com

Regex para costas apenas letras

Como posso escrever um regex que corresponda apenas a letras?

318
Nike

Use um conjunto de caracteres: [a-zA-Z] corresponde a uma letra de A a Z em letras minúsculas e maiúsculas. [a-zA-Z]+ corresponde a uma ou mais letras e ^[a-zA-Z]+$ corresponde apenas a strings que consistem em apenas uma ou mais letras (^ e $ marcam o início e o fim de uma string, respectivamente).

Se você quiser combinar outras letras que não A – Z, você pode adicioná-las ao conjunto de caracteres: [a-zA-ZäöüßÄÖÜ]. Ou você usa classes de caracteres predefinidas como propriedade de caractere Unicode classe \p{L} que descreve os caracteres Unicode que são letras.

338
Gumbo

\p{L} corresponde a qualquer coisa que seja uma letra Unicode se você estiver interessado em alfabetos além do latino

166
RobV

Dependendo do seu significado de "personagem":

[A-Za-z] - todas as letras (maiúsculas e minúsculas)

[^0-9] - todos os caracteres não dígitos

42
KristofMols

A opção mais próxima disponível é

[\u\l]+

que corresponde a uma seqüência de letras maiúsculas e minúsculas. No entanto, não é suportado por todos os editores/idiomas, por isso é provavelmente mais seguro usar

[a-zA-Z]+

como outros usuários sugerem

28
blue_note

Você usaria

/[a-z]/gi

[] - verifica qualquer caractere entre as entradas dadas

a-z --- cobre todo o alfabeto

g ----- globalmente ao longo de toda a cadeia

i ----- obtendo maiúsculas e minúsculas

13
Scott

A expressão regular que poucas pessoas escreveram como "/ ^ [a-zA-Z] $/i" não está correta porque no último eles mencionaram / i que é para maiúsculas e minúsculas e depois de correspondência para primeira vez ele retornará. Em vez de / i é só usar / g que é global e você também não precisa colocar ^ $ para iniciar e terminar.

/[a-zA-Z]+/g
  1. [a-z _] + corresponde a um único caractere presente na lista abaixo
  2. Quantificador: + Entre um e ilimitado, tantas vezes quanto possível, devolvendo conforme necessário
  3. a-z um único caractere no intervalo entre a e z (diferencia maiúsculas de minúsculas)
  4. A-Z um único caractere no intervalo entre A e Z (diferencia maiúsculas de minúsculas)
  5. g modificador: global. Todas as partidas (não retornam no primeiro jogo)
12
Yogesh Chauhan

Para o PHP, o seguinte funcionará bem

'/^[a-zA-Z]+$/'
11
Rohit Dubey
/[a-zA-Z]+/

Exemplo super simples. Expressões regulares são extremamente fáceis de encontrar online.

http://www.regular-expressions.info/reference.html

10
Scott Radcliff

Java:

String s= "abcdef";

if(s.matches("[a-zA-Z]+")){
     System.out.println("string only contains letters");
}
8
Udeshika Sewwandi

Apenas use \w ou [:alpha:]. É uma seqüência de escape que combina apenas com símbolos que podem aparecer em palavras.

6
Agaspher

Use grupos de caracteres

\D

Corresponde a qualquer caractere, exceto dígitos de 0 a 9

^\D+$

Veja o exemplo aqui

5
Tomáš Nedělka

Se você quer dizer qualquer letra em qualquer codificação de caracteres, então uma boa abordagem pode ser excluir letras não como espaços \s, dígitos \d e outros caracteres especiais como:

[[email protected]#\$%\^&\*\(\)\[\]:;'",\. ...more special chars... ]

Ou use a negação da negação acima para descrever diretamente qualquer letra:

\S \D and [^  ..special chars..]

Prós:

  • Funciona com todos os sabores de regex.
  • Fácil de escrever, às vezes economizar muito tempo.

Contras:

  • Long, às vezes não é perfeito, mas a codificação de caracteres também pode ser quebrada.
3
Sławomir Lenart

Você pode tentar esta expressão regular: [^\W\d_] ou [a-zA-Z].

3
Motlab

padrão =/[a-zA-Z] /

coloca "[a-zA-Z]: # {pattern.match (" minha flor ")}" OK

puts "[a-zA-Z]: # {pattern.match (" 456 ")}"

puts "[a-zA-Z]: # {pattern.match (" ")}"

puts "[a-zA-Z]: # {pattern.match (" # $% ^ & * ")}"

coloca "[a-zA-Z]: # {pattern.match (" # $% ^ & * A ")}" OK

1
Snm Maurya