Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

164
Views
¿Cómo valido que cada primera letra de un nombre esté en mayúsculas?

Tengo una entrada donde el usuario escribe su nombre y apellido. Necesito validar si tanto el nombre como el segundo comienzan con letras mayúsculas. También es necesario manejar más de dos nombres.

He intentado esto en mi objeto de validación. Me doy cuenta de que obtengo un si para cada elemento durante el mapeo, no estoy seguro de cómo escribirlo correctamente.

 nameCheck(value){ let name = value.split(" "); name?.map(element => { if(name?.length > 0 && element[0] === element[0].toUpperCase()){ return true } else{ return false } } ) }

Lo estoy llamando así:

 const isValidName = validate.nameCheck(form.creator) console.log(isValidName)

Aquí isValidName termina sin definir. Todas mis otras comprobaciones de validación son declaraciones if simples que funcionan bien.

¿Alguna idea de cómo abordar esto?

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

No está devolviendo nada del método nameCheck ; Pero está utilizando el map aquí, y si devuelve el valor que devuelve el map , devolverá una matriz de valores booleanos.

 const validate = { nameCheck(value) { let name = value.split(" "); return name?.map((element) => { // change, Added return keyword if (name?.length > 0 && element[0] === element[0].toUpperCase()) { return true; } else { return false; } }); }, }; const isValidName = validate.nameCheck("Test user"); console.log(isValidName); const isValidName2 = validate.nameCheck("Test User"); console.log(isValidName2);

No creo que quieras return an array ; solo desea return a Boolean value que indique si el nombre es válido o no.

Entonces puedes usar every aquí como:

 const validate = { nameCheck(value) { return value.split(" ").every((s) => s[0].toUpperCase() === s[0]); }, }; const isValidName = validate.nameCheck("Test user"); console.log(isValidName); const isValidName2 = validate.nameCheck("Test User"); console.log(isValidName2);


EDITADO: si hay varios espacios entre dos palabras, puede filtrar la cadena vacía como

 const validate = { nameCheck(value) { return value .split(" ") .filter(Boolean) .every((s) => s[0].toUpperCase() === s[0]); }, }; const isValidName = validate.nameCheck("Test user"); console.log(isValidName); const isValidName2 = validate.nameCheck("Test User"); console.log(isValidName2);


lastname de nombre y firstname

1) Using split and regex

 const names = value.split(/\s+/); if(names.length > 1) /* There are multiple names */

2) Using split and Destructuring

 const [firstname, lastname] = value.split(/\s+/); if (firstname && lastname) { /* Both firstname and lastname is present */ }
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!