Expressão regular para limitar o número de caracteres a 10

189

Estou tentando escrever uma expressão regular que permita apenas letras minúsculas e até 10 caracteres. O que eu tenho até agora é assim:

pattern: /^[a-z]{0,10}+$/ 

Isso não funciona ou compila. Eu tinha uma que funcionava, que apenas permitia letras minúsculas, que era esta:

pattern: /^[a-z]+$/ 

Mas preciso limitar o número de caracteres para 10.

Peter Mortensen
fonte
4
O {} e o + fazem a mesma coisa (contando), portanto são redundantes, daí o erro.
PhiLho
1
Você deve soltar o '+' de / ^ [az] {0,10} + $ /. Deveria ser / ^ [az] {0,10} $ /
SO User
1
Observe que o padrão é ^[a-z]{0,10}+$compilado em algumas linguagens e algumas das mais notáveis ​​são Java, Perl (5.10+), PHP, Ruby (1.9+). Veja esta página para mais detalhes.
Jerry
Veja também solução universal via lookahead: Restringindo o comprimento dos caracteres na expressão regular
Vadzim 30/03

Respostas:

356

Você pode usar chaves para controlar o número de ocorrências. Por exemplo, isso significa 0 a 10:

/^[a-z]{0,10}$/

As opções são:

  • {3} Exatamente 3 ocorrências;
  • {6,} Pelo menos 6 ocorrências;
  • {2,5} 2 a 5 ocorrências.

Veja a referência da expressão regular .

Sua expressão teve um + após a chave de fechamento, daí o erro.

cleto
fonte
No Chrome Dev Tools com brasa Eu tive que omitir o início ^de jogo propriedade somente pedidos com um nome como 1234ou 5678, e eu tive que incluem o sinal $
Devin G Rhode
11

/^[a-z]{0,10}$/Deveria trabalhar. /^[a-z]{1,10}$/se você quiser combinar pelo menos um caractere, como /^[a-z]+$/faz.

Joren
fonte
9

Pode ser benéfico adicionar correspondência gananciosa ao final da string, para que você possa aceitar strings> 10 e o regex retornará apenas até os 10 primeiros caracteres. /^[a-z0-9]{0,10}$?/

jfarrell
fonte
8

Depende muito do programa que você está usando. Programas diferentes ( Emacs , vi , sed e Perl ) usam expressões regulares ligeiramente diferentes. Nesse caso, eu diria que no primeiro padrão, o último "+" deve ser removido.

Diego Sevilla
fonte
7
grep '^[0-9]\{1,16\}' | wc -l

Dá as contagens com contagem exata de correspondências com limite

user6911841
fonte