Descubrí que \A se puede emular con:
(?<!\s)^ y PCRE(2)/re2 \z (Python \Z ) se pueden emular con:
$(?!\s)demostración de expresiones regulares 101
¿De qué otra manera se pueden emular \A y/o \z en JS?
Incluso regular-expression.info no menciona lo que he presentado.
Además de las soluciones que ha utilizado, puede probar una de las siguientes:
Deshabilite el modificador multilínea. En Javascript, por defecto, ^ coincide con \A y $ coincide con \z y usa:
^|$o
puede capturarlos en grupos como se muestra a continuación:
(^)[\s\S]*($)(^) - haga coincidir el inicio de la primera línea y captúrelo en el grupo 1[\s\S]* - coincide con avidez con más de 0 ocurrencias de cualquier carácter (incluyendo saltos de línea)($) : haga coincidir el final de la última línea y captúrelo en el grupo 2Cuando no necesita ^ y $ como límites de línea , estos símbolos actúan como \A y \z de manera predeterminada. Manifestación:
let results = `a good test with a second line, and ending with a bad z a third line, and a bad z a final line, and a good z` .match(/^a (\w+)|(\w+) z$/g); console.log(results); Si necesita usar la detección de límite de línea en su expresión regular, entonces normalmente usaría el modificador /m , y luego puede usar su idea de mirar alrededor.
Alternativamente, puede omitir el modificador /m y simplemente usar ^ y $ para \A y \z , pero luego use la búsqueda para detectar los límites de la línea:
(?<![^\n\r])(?![^\n\r]) let results = `a bad test with a good line, and ending with a good z a third line, after a good line, and a bad z a final line, and a bad z` .match(/(?<![^\n\r]). good|good .(?![^\n\r])/g); console.log(results); Para casos específicos a veces se pueden utilizar otras técnicas. Por ejemplo, de forma predeterminada (sin /s ), el patrón .* capturará cualquier cosa hasta el final de la línea, por lo que puede estar seguro de estar en el final de la línea después de esa captura.