为了回答《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
这两个正则表达式之间的差异可以忽略不计吗?是否存在我的正则表达式可以匹配但作者的正则表达式不能匹配的字符串,或者反之亦然?
最佳答案
- 作者创建了您没有创建的反向引用
\d+\.?\d*
与\d+(\.\d*)?
匹配,但后者在引擎方面更有效您使用$
强制匹配字符串末尾
如果您不需要额外的捕获,它们是相同的
<小时/>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/