Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

DÚVIDA NUM EXERCÍCIO DE EXPRESSÕES REGULARES

Não entendi a resposta de um dos exercícios da plataforma: Insira aqui a descrição dessa imagem para ajudar na acessibilidade ESSE É O ENUNCIADO

Essa aqui é a resposta certa:

$cpfValido = preg_match('/^[0-9]{3}.[0-9]{3}.[0-9]{3}-[0-9]{2}$/', $cpf);

Só que qual a diferença entre essa e a outra abaixo?

$cpfValido = preg_match('/[0-9]{3}.[0-9]{3}.[0-9]{3}-[0-9]{2}/', $cpf);

2 respostas
solução!

Olá, Daniel!

Na expressão regular, o caractere "^" indica o início da string e o caractere "$" indica o final da string. Portanto, na primeira opção de expressão regular, "/^[0-9]{3}.[0-9]{3}.[0-9]{3}-[0-9]{2}$/" estamos verificando se a string começa e termina exatamente com o padrão especificado. Ou seja, ela só será considerada válida se tiver exatamente o formato "XXX.XXX.XXX-XX".

Já na segunda opção de expressão regular, "/[0-9]{3}.[0-9]{3}.[0-9]{3}-[0-9]{2}/", não estamos verificando se a string começa e termina exatamente com o padrão especificado. Ela apenas verifica se o padrão está presente em qualquer parte da string. Ou seja, se a string tiver o formato "XXX.XXX.XXX-XX" em qualquer posição, será considerada válida.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓

Oi, Daniel

Exemplo do que o Vinicius falou


$cpf= "1123.456.789-211";

$cpfValido = preg_match('/^[0-9]{3}\.[0-9]{3}\.[0-9]{3}-[0-9]{2}$/', $cpf); // false

$cpfValido2 = preg_match('/[0-9]{3}\.[0-9]{3}\.[0-9]{3}-[0-9]{2}/', $cpf); // true