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

487
Views
Validación de FormControl angular con expresiones regulares: las líneas de área de texto no deben comenzar con caracteres especiales

Tengo un área de texto con un FormControl simple, que me gustaría validar a través del método Validators.pattern(). Ninguna de las nuevas líneas debe comenzar con un ? o *. Esos son todos los requisitos.

He intentado lo siguiente:

 control = new FormControl('', Validators.pattern(/^(\?|\*)$/));

Con esto, puedo validar la primera línea (funciona bien si la línea comienza con un carácter especial), pero tan pronto como presione enter, mi FormControl no será válido.

¿Cómo debo modificar la expresión regular para cumplir con los requisitos?

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

0

Dado que se trata de un área de texto, debe emular el metaescape \A que es "inicio de cadena , no línea"

 /(?<!\s)^(?![\s\S]*^[?*])/gm
  • (?<!\s)^ - detecta el inicio de la cadena
  • (?![\s\S]*^[?*]) - Delante de mí no puede haber ninguna línea que comience con un signo de interrogación o un asterisco
    • [\s\S]* - captura todo, incluso las líneas nuevas
    • ^[?*] : detecta una línea que comienza con un signo de interrogación o un asterisco

https://regex101.com/r/NacQst/1

about 4 years ago · Juan Pablo Isaza Report

0

Puedes usar

 // With a string literal where anchors are added automatically by Angular control = new FormControl('', Validators.pattern('(?![?*]).*(?:[\r\n]+(?![?*]).*)*')); // Or, with a regex literal control = new FormControl('', Validators.pattern(/^(?![?*]).*(?:[\r\n]+(?![?*]).*)*$/));

Vea la demostración de expresiones regulares . Detalles :

  • ^ - anclaje de inicio de cadena
  • (?![?*]) - no ? y * se permiten inmediatamente a la derecha de la ubicación actual
  • .* - cero o más caracteres que no sean caracteres de salto de línea tantos como sea posible
  • (?: - comienzo de un grupo que no captura:
    • [\r\n]+ - uno o más caracteres CR / LF (retorno de carro o caracteres de avance de línea)
    • (?![?*]).* - una línea que no comienza con ? ni *
  • )* - fin de grupo, cero o más ocurrencias
  • $ - final de la cadena.
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!