es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Excluyendo URLs/Imágenes en una operación de Expresión Regular en una cadena de texto.

Estoy construyendo una aplicación en la que los usuarios resaltan y desplazan palabras en un artículo que escriben en la barra de búsqueda. Los artículos vienen en formato Markdown y estoy utilizando Markdown-it para renderizar el contenido del artículo.

Funciona bien, excepto si la palabra que buscan forma parte de una URL de imagen. Se aplica una expresión regular y la imagen se rompe.

applyHighlights() {
  let str = this.article.body
  let searchText = this.articleSearchAndLocate
  const regex = new RegExp(searchText, 'gi')
  let text = str
  if (this.articleSearchAndLocate == '') {
    return text
  } else {
    const newText = text.replace(
      regex,
      `<span id="searchResult" class="rounded-sm shadow-xl py-0.25 px-1 bg-accent font-semibold text-tint">$&</span>`
    )
    return newText
  }
}

¿Hay alguna manera de excluir la aplicación de la expresión regular si es una URL de imagen?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, puedes modificar la expresión regular para excluir las URL de imágenes. Una forma de hacer esto es utilizando una afirmación de búsqueda negativa en la expresión regular.

    Por ejemplo:

    const regex = new RegExp(`(?<!\\(|\\[)${searchText}`, 'gi');
    

    Esta expresión regular incluye una afirmación de búsqueda negativa (?<!\\(|\\[) que excluye el texto de búsqueda que está inmediatamente precedido por un carácter ( o [. Esto debería excluir cualquier URL que esté dentro de enlaces o imágenes de Markdown.

    Puedes ajustar los caracteres específicos dentro de la afirmación de búsqueda negativa para que se adapten a tu sintaxis de Markdown específica.

Comments are closed.