/ / JS regex que permite letras minúsculas e sublinhado (no meio) - javascript, regex, angular

JS regex que permite letras minúsculas e sublinhado (entre) - javascript, regex, angular

Preciso criar um regext JS que permita apenas letras minúsculas e sublinhado (não no primeiro ou no último).

por exemplo . abc_xyz ou abcc ou abc____xyc___sss

Estou tentando algo como

/^[a-z]+$/

mas não entendo como gerenciar sublinhado

Respostas:

3 para resposta № 1

Você pode usar

/^[a-z]+(?:_+[a-z]+)*$/

Veja o demo regex. Se pode haver apenas 1 _ entre letras, substitua _+ com _ (remover + depois de _).

Detalhes do padrão:

  • ^ - início da string
  • [a-z]+ - 1+ letras ASCII minúsculas
  • (?:_+[a-z]+)* - 0+ sequências de:
    • _+ - 1+ _ chars
    • [a-z]+ - 1+ letras ASCII minúsculas
  • $ - fim da string.

0 para resposta № 2
/^[a-z]+_*[a-z]+$/.test("abc_xyz")
true
/^[a-z]+_*[a-z]+$/.test("_abc_xyz")
false
/^[a-z]+_*[a-z]+$/.test("abc_xyz_")
false
/^[a-z]+_*[a-z]+$/.test("abc____xyz")
true
/^[a-z]+_*[a-z]+$/.test("abcxyz")
true

Este padrão não permite um sublinhado no início ou no final.