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.

Patrón Regex para buscar comentarios, pero no URLs.

Estoy tratando de crear una expresión regular para detectar todos los comentarios en un código. Pero también estoy obteniendo los hipervínculos debido a la secuencia de caracteres de comentario en línea //, lo cual no quiero; solo necesito la parte del comentario.

var ejemplo = `Hola //esto es una prueba
 http://google.com
 //segundo
 tercero
 https://test.com`;
var regex = new RegExp(
  /(\/\*([^*|[\r\n]|(\*+([^*\/]|[\r\n])))*\*+\/)|(\/\/.*)/g
);
console.log(ejemplo.match(regex));

La salida es ["//esto es una prueba", "//google.com", "//segundo", "//test.com"]
La salida debería ser ["//esto es una prueba", "//segundo"]

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para detectar solo la parte de comentarios y excluir los hipervínculos, puede modificar el patrón regex para excluir líneas que comiencen con http://` ohttps://`. Aquí está el regex actualizado:

    /(\/\*([^*|[\r\n]|(\*+([^*\/]|[\r\n])))*\*+\/)|(\/\/(?!http[s]?:)(.*))/g
    

    Este patrón primero busca comentarios de varias líneas (/* ... */) y luego busca comentarios de una sola línea (// ...). Sin embargo, también excluye las líneas que comienzan con http://` ohttps://` utilizando una búsqueda negativa (?!http[s]?:).

    Aquí le mostramos cómo puede utilizar este regex en su código:

    var sample = `Hola // esto es una prueba
     http://google.com
     //segundo
     tercero
     https://test.com`;
    var regex = /(\/\*([^*|[\r\n]|(\*+([^*\/]|[\r\n])))*\*+\/)|(\/\/(?!http[s]?:)(.*))/g;
    var resultado = sample.match(regex);
    console.log(resultado); // ["// esto es una prueba", "//segundo"]
    

    Ahora, la salida solo incluirá los comentarios deseados ["// esto es una prueba", "//segundo"].

Comments are closed.