Expressão Regular para Nome Completo

Estou tentando criar um regex para validar uma entrada do usuário. Só gostaria de validar um nome completo. Pelos regex que eu tentei, não é possível validar nomes com acento (Luís Alberto), apóstrofo (Brian O’Connor) ou hífen (Catherine Zeta-Jones)…

Alguém pode compartilhar alguma ideia?

1 Curtida

cara eu não pensei em nada agora mas amei os exemplos

2 Curtidas

Eu não conheço nada para validar nome completo, infelizmente.

Se ajudar:

  • segue uma API que checa o primeiro nome (acredito que não seja exatamente o que você procura).
  • Outra ideia para validar o nome completo você poderia tentar validar com uma api que tenha a base de contatos da empresa (ainda sim estaria correndo riscos de erros de digitação)
  • ou pedir o CPF que acredito que seja mais fácil pq poderia usar outras APIs para checar se a pessoa é quem diz ser, caso seja essa a intenção.
1 Curtida

Vou colocar a expressão regex e explicá-la. Aí tu tem que criar um script recebendo a variável de entrada.

Se o nome for simples, ou seja, não tem nome e nem sobrenome.

var nome = "colocar o nome da variável";
var regex = /^[A-Za-záàâãéèêíïóôõöúçñÁÀÂÃÉÈÍÏÓÔÕÖÚÇÑ-']+$/;

A-Za-z maiúsculas e minúsculas sem acento
áàâãéèêíïóôõöúçñ : vogais acentuadas do português, cedilha e umas outras de lambuja, minúsculas
ÁÀÂÃÉÈÊÍÏÓÔÕÖÚÇÑ : vogais acentuadas do português, cedilha e umas outras de lambuja, maiúsculas
- hífen
' apóstrofo

Se for nome e sobrenome.
Neste caso, talvez fosse melhor fazer o split da string, separando-a por espaços, e em seguida verificar se cada uma das partes é um nome válido (ou seja, se tem somente letras):


var nomeCadastro = "colocar o nome da variável";

// removi o espaço da regex (agora ela só considera as letras)
var regex = /^[A-Za-záàâãéèêíïóôõöúçñÁÀÂÃÉÈÍÏÓÔÕÖÚÇÑ-']+$/;

nomeCadastro.forEach(nome => {
    let valido = nome.split(/ +/).every(parte => regex.test(parte));
    console.log(`${nome} = ${valido ? 'válido': 'inválido'}`);
});
4 Curtidas