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: coincide con la nueva línea o el final de la línea o el espacio en JS

Quería extraer :privacy y :date de la cadena de ejemplo a continuación.

Quería tener una restricción de expresiones regulares que describiera que un bloque :[^:\s]+ (por ejemplo, :privacy o :date ) solo puede terminar con un espacio \s o una nueva línea \n o un final de cadena $ (entonces Podré tener una regla para dividir lógicamente estos bloques en los pasos posteriores).

Así que simplemente pongo (?:$|\n|\s) al final de la expresión regular, pero no funciona para mí (la tercera expresión regular a continuación). Verifiqué dos veces que funciona cuando pongo \s o $ por separado (la primera y la segunda expresión regular a continuación), ahora no tengo idea de cómo puedo implementarlo. Gracias por tu ayuda.

 'note::tmp hogehoge. :privacy :date'.match(/\s:[^:\s]+\s/g) (1) [' :privacy '] 'note::tmp hogehoge. :privacy :date'.match(/\s:[^:\s]+$/g) (1) [' :date'] 'note::tmp hogehoge. :privacy :date'.match(/\s:[^:\s]+(?:$|\n|\s)/g) (1) [' :privacy ']
about 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Puede usar el patrón de expresión regular a continuación para que coincida con un patrón de bloque: [^:\s+]+ terminado por un espacio \s o una nueva línea \n o un final de cadena $

 /((:[^:\s+]+)(?:[\s\n]))|(:[^:\s+]+)(?:[\s\n])?$/gm (?:[\s\n]) - will check if the block is being followed by a space or a new line (:[^:\s+]+)(?:[\s\n])?$ - will check if the block is at the end of string or not.

también puede usar la técnica de búsqueda para lograr el mismo resultado

 (:[^:\s+]+)(?=\s|\n|$)
about 4 years ago · Santiago Trujillo Report

0

En su patrón \s:[^:\s]+\s está haciendo coincidir los caracteres de espacios en blanco iniciales y finales.

Lo que podría hacer es afirmar un límite de espacio en blanco usando (?!\S) a la derecha.

Para obtener el valor sin el carácter de espacio en blanco inicial, puede usar un grupo de captura.

 \s(:[^:\s]+)(?!\S)

Demostración de expresiones regulares

 const s = "note::tmp hogehoge. :privacy :date"; const regex = /\s(:[^:\s]+)(?!\S)/g; const result = Array.from(s.matchAll(regex), m => m[1]); console.log(result);

about 4 years ago · Santiago Trujillo 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!