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

标签 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. 作者创建了您没有创建的反向引用
  2. \d+\.?\d*\d+(\.\d*)? 匹配,但后者在引擎方面更有效
  3. 您使用 $ 强制匹配字符串末尾

如果您不需要额外的捕获,它们是相同的

<小时/>

Is there any string to which my regular expression will match but the author's won't, or vice versa?

仅当数字后面有文本时,例如 1 abc

没有,自上次问题编辑以来

关于javascript - 这两个正则表达式之间的差异可以忽略不计吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32686944/

相关文章:

regex - 如何查找包含 3 组双字母的行(这些组可能包含也可能不包含相同的字母)

javascript - 未捕获的类型错误 : Object [object Object] has no method 'overlay'

javascript - 有没有一种方法可以使页面布局在 100% 缩放时完美匹配,同时也尊重更大的缩放因子?

javascript - 每次遇到一个元素时将数组拆分为多个数组的最佳方法是什么?

javascript - 如何检查对象中的对象是否存在

javascript - 从指令设置表单元素的属性

python - 解析电子邮件中的 "Sent"行

javascript - 从链接打开页面而不是导航到页面时是否可以隐藏 div?

regex - 使用 grep 命名捕获组

php - 当 haystack 包含额外标记时,文本解析器会在 needle 上给出假阴性