Mi expresión regular es:
let a = new RegExp("(?:https?:)?\/\/(?:www\.)?(?:facebook|fb)\.com\/(?<profile>(?![Az]+\.php)(?!marketplace|gaming|watch|me|messages|help|search|groups)[\w.\-]+)\/?", "g")
Básicamente es una modificación de la que se ve aquí para que facebook extraiga el nombre de usuario de una url de facebook.
Mi cadena de prueba es https://facebook.com/peterparker
y mi código es:
a.exec("https://facebook.com/peterparker")
Cuando intento esto en RegExr , funciona bien. Muestra el grupo correcto capturado ( peterparker
).
Sin embargo, cuando pruebo el mismo código en la consola de Google Chrome, el código devuelve nulo:
¿Por qué no aparece en la consola de Chrome?
Dado que está creando su expresión regular a partir de una cadena, debe escapar de sus barras invertidas.
let a = new RegExp("(?:https?:)?\/\/(?:www\.)?(?:facebook|fb)\\.com\/(?<profile>(?![Az]+\\.php)(?!marketplace|gaming|watch|me|messages|help|search|groups)[\\w.\\-]+)\\/?", "g") console.log(a.exec("https://facebook.com/peterparker"))
Crearlo en línea no tiene este problema.
let a = /(?:https?:)?\/\/(?:www\.)?(?:facebook|fb)\.com\/(?<profile>(?![Az]+\.php)(?!marketplace|gaming|watch|me|messages|help|search|groups)[\w.\-]+)\/?/g console.log(a.exec("https://facebook.com/peterparker"))