Javascript正则表达式与Perl正则表达式相比

Ami*_*itd 37 javascript regex perl

当谈到正则表达式时,我只是一个菜鸟.我知道Perl在regexp上很棒,我不太了解Perl.最近开始学习JavaScript并且遇到了用于验证用户输入的正则表达式...没有使用它们.

JavaScript regexp与Perl regexp相比如何?共同点和不同点?
是否可以在Perl中使用所有用JS编写的regexp,反之亦然?
类似的语法?

Tim*_*ker 28

从ECMAScript 2018开始,许多JavaScript的正则表达式缺陷已得到修复.

还缺少什么:

  • JavaScript没有办法通过最终匹配(使用占有量词++/ *+/ ?+或原子组(?>...))来阻止回溯.
  • 不支持递归/平衡子组匹配.
  • 另一个(化妆品)的事情是JavaScript不知道冗长的正则表达式,这可能使它们更难阅读.

除此之外,两种风格的基本正则表达式语法非常相似.

  • 您可以使用字符串连接伪造详细的正则表达式.它不像真正的详细正则表达式那么好,所以当你这样做时屏障更高,但它仍然是一个选项,在某些情况下绝对值得. (3认同)

cod*_*ict 8

comparison将回答您的所有疑问.

  • 具体来说(实际上是有用的),5.10添加命名捕获,命名为反向引用,使用`+`添加"占有量词",以及与回溯控制和递归下降解析相关的其他一些内容比较. (5认同)
  • 除了它已经过时了大约三年,因为它只涵盖了Perl 5.8,并且该列表中的一些内容在5.10中添加了. (4认同)

rpl*_*iko 5

另一个区别:在JavaScript中,没有s修饰符:点"." 将永远不会匹配换行符.作为"."的替代,[\s\S]可以在JavaScript中使用字符类,它将像/./sPerl 一样工作.

  • ECMAScript 2018中添加了`s`修饰符. (2认同)