Estoy tratando de crear una expresión regular para detectar todos los comentarios en un código. Pero también obtengo los hipervínculos debido a la secuencia de caracteres de comentarios en línea // , que no quiero; Solo necesito la parte del comentario.
var sample = `Hello //this is a test http://google.com //second third https://test.com`; var regex = new RegExp( /(\/\*([^*|[\r\n]|(\*+([^*\/]|[\r\n])))*\*+\/)|(\/\/.*)/g ); console.log(sample.match(regex)); El resultado es ["//this is a test", "//google.com", "//second", "//test.com"]
La salida debe ser ["//this is a test", "//second"]
Para una forma rápida y sucia, podrías usar
(?<=^|[^\S])\/\/.+Vea una demostración en regex101.com .
En JavaScript , esto podría ser
var sample = `Hello //this is a test http://google.com //second third https://test.com`; var regex = new RegExp(/(?<=^|[^\S])\/\/.+/g); console.log(sample.match(regex));Agregué nueva línea y 0 o más pestañas antes de sus dos grupos de captura principales:
/[\r\n][/t]*(\/\*([^*|[\r\n]|(\*+([^*\/]|[\r\n])))*\*\/)|[\r\n][\t]*(\/\/.*)/gEsto significa que el comentario debe estar al comienzo de una nueva línea, por lo que no coincidirá con un hipervínculo en el medio de su código.