问题 1:匹配十进制数字

乍一看,写一个正则表达式来匹配一个数字应该很容易吧?

我们可以用特殊字符 \d 来匹配任何数字,唯一要做的就是匹配小数点。真的是这样吗?对于简单的数字来说,这没有问题,但是对于科学或金融数字来说,我们经常需要处理正数和负数有效数字指数,甚至不同的表示法 (比如用来分隔千和百万的逗号)。

下面是您可能遇到的几种不同格式的数字。请注意您是如何匹配小数点本身的。如果无法顺利跳过最后一个数字,请观察该数字和其他数字的末尾的区别。

当我们考虑金融数字、指数等形式时,表达式可能相当复杂。 对于上面的例子,表达式 可以匹配这样的字符串:以一个可选的负号开头、一位或几位数字、可选的逗号和更多位数字、可选的小数点与小数数字、可选的指数部分。 这不是唯一的解决方案,比如表达式 也可以匹配这些数字。 (译者注) 让我们尝试一步步解决这个问题: 1. 匹配一个可能是负数的整数: 2. 匹配小数: 3. 整数部分可能使用了千位分隔符: 4. 匹配科学计数法: