为了回答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
这两个正则表达式之间的差异是否可以忽略不计?是否有任何字符串,我的正则表达式将匹配,但作者赢了,反之亦然?
答案 0 :(得分:1)
\d+\.?\d*
与\d+(\.\d*)?
匹配,但后者在引擎方面更有效
$
强制匹配字符串的结尾
如果您不需要额外的捕获,它们都是相同的
我的正则表达式会匹配哪些字符串但作者不会,反之亦然?
仅在数字后面有文字,例如 1 abc
无,自上次问题编辑