I have a function that validates everything at Frontend level with Javascript but I also need to validate it in Backend with Laravel and Regex. The function is as follows:
$('input[type=password]').keyup(function() {
//Captura el valor de la variable escrita en tiempo real
var pswd = $(this).val();
var tieneOchoCaracteres = pswd.length;
var tieneDosLetras = (pswd.match(/[a-z]{1}/ig) || []).length >= 2;
var tieneMayus = /[A-Z]/.test(pswd);
var tieneDosNumeros = pswd.match(/\d\D+\d/g);
var tieneDosNumerosConsecutivos = pswd.match(/\d{2,}/);
// var tieneDosNumeros = (pswd.match(/\d/g) || []).length >= 2;
var tieneDosEspeciales = pswd.match(/[%_\-&#=\$@]\w+[%_\-&#=$@]/);
var tieneDosEspecialesConsecutivos = pswd.match(/[%_\-&#=\$@]{2,}/);
//var tieneSimbolos = (pswd.match(/[%_\-&\#=\$@]/g) || []).length >= 2;
//validar el tamaño mayor a 8 caracteres
if (tieneOchoCaracteres >= 8) {
$('#length').removeClass('invalid').addClass('valid');
} else {
$('#length').removeClass('valid').addClass('invalid');
}
//Validar Letras
//Esta expresión verifica que se haya ingresado al menos dos letra de la A a la Z (en mayúsculas) o de la A a la Z (en minúsculas)
if (tieneDosLetras) {
$('#letras').removeClass('invalid').addClass('valid');
} else {
$('#letras').removeClass('valid').addClass('invalid');
}
//Validar Mayusculas
//Esta expresion se verifica para asegurarse de que se haya ingresado al menos una letra mayúscula
if (tieneMayus) {
$('#mayusculas').removeClass('invalid').addClass('valid');
} else {
$('#mayusculas').removeClass('valid').addClass('invalid');
}
//Validar Numeros
//Esto comprobará si hay dígitos del 0 al 9
if (tieneDosNumeros && !tieneDosNumerosConsecutivos) {
$('#numeros').removeClass('invalid').addClass('valid');
} else {
$('#numeros').removeClass('valid').addClass('invalid');
}
//Validar caracteres especiales
//Esto comprobará si hay caracteres especiales y NO consecutivos
if (tieneDosEspeciales && !tieneDosEspecialesConsecutivos) {
$('#simbolos').removeClass('invalid').addClass('valid');
} else {
$('#simbolos').removeClass('valid').addClass('invalid');
}
}).focus(function() {
$('#pswd_info').show();
}).blur(function() {
$('#pswd_info').hide();
});
Now the question is. How do I apply all these Regex rules at the backend level to the password only?
The only validation I have for the password is:
if (!empty($request->password)) {
$request->validate([
'password' => 'alpha_num|max:15',
]);
$actualizacion['password'] = bcrypt($request->password);
}
But can I put the whole rule of regex in one as follows?
'password' => 'alpha_num|max:15',/[a-z]{1}|\d\D+\d|[%_\-&#=\$@]\w+[%_\-&#=$@]|etc...'
I appreciate your help. Greetings!