Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.

No desenvolvimento de sistemas, muitas vezes precisamos validar se uma string contém apenas letras do alfabeto latino, incluindo caracteres com acento. A questão é especialmente relevante para aplicações que lidam com nomes, endereços ou dados internacionais.
Uma abordagem comum é usar expressões regulares com a classe Pattern do Java. Porém, o ponto crucial é garantir que os caracteres com acento sejam considerados. Uma expressão que funciona bem é: A decisão fica mais saudável quando o time consegue medir o impacto depois. Sem esse critério, a solução pode parecer simples no começo e cara no suporte.
Pattern pattern = Pattern.compile("^[\p{L}]+$").
O \p{L} cobre todas as letras unicode, incluindo as com acento. Assim, a validação fica mais robusta, considerando letras com e sem acento.
Se a sua necessidade é aceitar apenas caracteres latinos básicos (a-z, A-Z) e suas variações acentuadas, essa expressão cobre bem. Mas atenção: ela aceita qualquer letra unicode, então, se precisar restringir a um subconjunto, terá que ajustar a regex. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta. Esse contexto ajuda a separar ganho real de novidade difícil de sustentar.
Como vocês geralmente fazem validações desse tipo? Preferem o uso de expressões ou alguma biblioteca específica? Para mim, o padrão \p{L} funciona bem na maioria dos casos, facilitando a validação sem precisar listar os caracteres individualmente. Esse contexto ajuda a separar ganho real de novidade difícil de sustentar. A decisão fica mais saudável quando o time consegue medir o impacto depois. Sem esse critério, a solução pode parecer simples no começo e cara no suporte. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco.
A minha dúvida é: e se a string tiver espaços ou outros caracteres? Como vocês fazem pra validar só letras com acento, mas permitindo espaços? Ou vocês preferem uma validação mais estrita mesmo?
Essa abordagem com \p{L} é ótima, especialmente porque cobre uma gama ampla de caracteres unicode. Mas às vezes tenho receio de aceitar caracteres que não sejam estritamente do alfabeto latino. Vocês já tiveram problemas com isso?
Eu faria uma validação mais específica, dependendo do caso. Se for nome completo, por exemplo, aceita espaços, hífens e apóstrofos. Mas se for só nome, aí restrinjo ao \p{L} mesmo. Cada cenário pede uma atenção diferente.
Concordo, Felippe. No meu time, a gente tenta limitar ao máximo o que é aceito na validação, pra evitar qualquer entrada que possa gerar problemas na hora do processamento.