这两个正则表达式之间的差异是否可以忽略不计?

时间:2015-09-21 03:34:07

标签: javascript regex

为了回答Eloquent JavaScript第九章的最后一个练习,我写了一个只匹配JavaScript风格数字的正则表达式。

我的正则表达式:

/^[-+]?(\d+\.?\d*|\.\d+)([eE][-+]?\d+)?$/

语法图:https://www.debuggex.com/r/-E6E-Vtk7RWMv5X9

作者的正则表达式:

/^(\+|-|)(\d+(\.\d*)?|\.\d+)([eE](\+|-|)\d+)?$/

语法图:https://www.debuggex.com/r/CCeZTSHeRIxnNXXY

这两个正则表达式之间的差异是否可以忽略不计?是否有任何字符串,我的正则表达式将匹配,但作者赢了,反之亦然?

1 个答案:

答案 0 :(得分:1)

  1. 作者创建了您不
  2. 的反向引用
  3. \d+\.?\d*\d+(\.\d*)?匹配,但后者在引擎方面更有效
  4. 您使用$强制匹配字符串的结尾
  5. 如果您不需要额外的捕获,它们都是相同的

      

    我的正则表达式会匹配哪些字符串但作者不会,反之亦然?

    仅在数字后面有文字,例如1 abc

    无,自上次问题编辑