Aquí está la cadena y la oración que quiero hacer coincidir (extraer).
let pigs = "\X The animal 0000 I really dig \X Above all others is the pig. 222 \X Pigs are noble. Pigs are clever 3333, \X Pigs are 5555 courteous.\X However, Now and then, to break this 6666 rule, \X One meets 7777 a pig who is a fool. \X" " Pigs are 5555 courteous."Aquí hay dos versiones de mi código. Cuando me registro en varios sitios web de verificación de expresiones regulares, da la coincidencia deseada. Pero cuando ejecuto en la consola del navegador, da nulo. Tengo la última versión de Chrome. ¿Por qué la consola del navegador no muestra la coincidencia aquí?
pigs.match(/(?<=\\X)[^\\X]*5555[^\\X]*(?=\\X)/g); pigs.match(/(?:\\X)[^\\X]*5555[^\\X]*(?:\\X)/g);Podrías usar el siguiente patrón:
(?<=\X)(?:.(?!\X))+5555.+?(?=\X) Lo que cambié es: (?:.(?!\X))+ - que es un grupo que no captura y la expresión coincide con uno o más caracteres, que no van seguidos de \X .
Además, usó incorrectamente [^\\X] : solo es una clase negada, coincidirá con cualquier carácter que no sea \ o X .
Debajo del ejemplo de JS:
let pigs = "\X The animal 0000 I really dig \X Above all others is the pig. 222 \X Pigs are noble. Pigs are clever 3333, \X Pigs are 5555 courteous.\X However, Now and then, to break this 6666 rule, \X One meets 7777 a pig who is a fool. \X" let match = pigs.match(/(?<=\X)(?:.(?!\X))+5555.+?(?=\X)/g) console.log(match)