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

194
Views
Regex: no permita solo espacios o caracteres especiales

¡por favor ayuda! He estado en esto durante horas.

Necesito una expresión regular de nombre que acepte letras y los siguientes caracteres especiales.

- , ' , . y espacios en blanco

Sin embargo, NO debe permitir que el nombre se componga solo de caracteres especiales o espacios en blanco.

Entonces, en esencia, debe tener al menos 1 letra o comenzar con una letra.

Lo que tengo es esto;

 /^[a-zA-Z](|\s|.|'|-]*$)/i

Sin embargo, está permitiendo caracteres especiales. Si alguien pudiera ayudar!

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

0

/^(?=.*[az])[az\s.'-]+$/i

(?=.*[az]) Requiere al menos una letra ASCII. (previsión positiva)

Puede usar + (coincidir con 1 o más) o * (coincidir con 0 o más).

Nota: debido a la bandera i , no necesita A-Za-z . Es insensible a mayúsculas y minúsculas. Entonces solo uno de ellos es necesario. Usar ambos con i-flag es redundante.

Curiosidades: Escapar . en el conjunto de caracteres [...] no es obligatorio pero opcional posible ( \. ).

 const regex = /^(?=.*[az])[az\s.'-]+$/i; console.log(regex.test('Hello World'), 'should be true'); console.log(regex.test('Hello.World'), 'should be true'); console.log(regex.test('Hello-World'), 'should be true'); console.log(regex.test(`'Hello- World.'`), 'should be true'); console.log(regex.test('Hello $ World'), 'should be false'); console.log(regex.test('Hello@World'), 'should be false'); // Min. one AZ char required. console.log(regex.test(`'.- `), 'should be false');

También puede probar su expresión regular en línea, por ejemplo , regexr o regex101 .

about 4 years ago · Juan Pablo Isaza Report

0

Una cadena formada por todos - , ' , . , espacios en blanco y letras es

 ^[-'.\sa-zA-Z]+$

Una cadena que tiene al menos una letra tiene un número ilimitado de las anteriores intercalando una sola letra:

 ^[-'.\sa-zA-Z]*[a-zA-Z][-'.\sa-zA-Z]*$

Puedes denotar las letras como quieras. a-zA-Z puede ser solo un marcador de posición.

about 4 years ago · Juan Pablo Isaza Report

0

En lugar de usar una sola expresión regular, también puede optar por usar varias. En tu escenario esto sería 2:

  1. Compruebe si solo se utilizan los caracteres de la lista blanca.
  2. Compruebe si se utiliza al menos una letra (ASCII).

 function validateName(name) { const whitelist = /^[-'.\sa-z]*$/i; const letter = /[az]/i; return whitelist.test(name) && letter.test(name); } console.log("John Doe", "//=>", validateName("John Doe")); console.log("John F. Kennedy", "//=>", validateName("John F. Kennedy")); console.log("Willem-Alexander", "//=>", validateName("Willem-Alexander")); console.log("Jeanne d'Arc", "//=>", validateName("Jeanne d'Arc")); console.log("-' .", "//=>", validateName("-' ."));

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!