Expresiones regulares de Javascript en comparación con expresiones regulares de Perl


Sólo soy un novato cuando se trata de expresiones regulares. Sé que Perl es increíble con regexp y no conozco mucho a Perl. Recientemente comenzó a aprender JavaScript y se encontró con expresiones regulares para validación de entradas de usuario... no los he usado mucho.

¿Cómo se compara la expresión regular de JavaScript con la expresión regular de Perl? Similitudes y diferencias?
¿Se pueden usar todas las expresiones regulares escritas en JS en Perl y viceversa?
Sintaxis Similar?

Author: Amitd, 1970-01-01

4 answers

Desde ECMAScript 2018 en adelante, muchas de las deficiencias de regex de JavaScript se han corregido.

Lo que todavía falta:

  • JavaScript no tiene una manera de evitar el retroceso al hacer que las coincidencias sean finales (utilizando cuantificadores posesivos++/*+/?+ o grupos atómicos (?>...)).
  • No se admite la coincidencia recursiva/balanceada de subgrupos.
  • Otra cosa (cosmética) es que JavaScript no conoce expresiones regulares detalladas, lo que podría dificultar su lectura.

Aparte de eso, la sintaxis regex básica es muy similar en ambos sabores.

 25
Author: Tim Pietzcker,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-06 10:11:10

Este comparison responderá a todas sus consultas.

 8
Author: codaddict,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-26 20:51:31

Otra diferencia: En JavaScript, no hay un modificador s: El punto "."nunca coincidirá con un personaje de nueva línea. Como sustituto de ".", la clase de caracteres [\s\S] se puede usar en JavaScript, que funcionará como /./s en Perl.

 5
Author: rplantiko,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-04-23 05:52:36

Acabo de encontrarme con una instancia donde el \d, decimal no se reconoce en algunas versiones de JavaScript you tienes que usar [0-9].

 0
Author: Bob Ray,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-05-14 06:04:29