乍一看,写一个正则表达式来匹配数字似乎很简单,对吧?
我们可以用 \d 来匹配任意数字,然后再匹配一个小数点就可以了,不是吗?对于简单的数字来说,这样的确可行。但当我们处理科学或金融领域的数字时,常常还要面对正负号、有效数字、指数形式,甚至不同的数字表示方式(例如使用逗号来分隔千位和百万位)。
下面是一些你可能会遇到的不同格式的数字。
| Task | Text | |
| 匹配 | 3.14529 | ![]() |
| 匹配 | -255.34 | ![]() |
| 匹配 | 128 | ![]() |
| 匹配 | 1.9e10 | ![]() |
| 匹配 | 123,340.00 | ![]() |
| 跳过 | 720p | ![]() |
| 提示 | 表达式 ^-?\d+(,\d+)*(\.\d+(e\d+)?)?$ 可以匹配以下形式的字符串:以一个可选的负号开头,接着是一个或多个数字,后面可以跟着若干个逗号+数字的组合(表示千位分隔),然后是一个可选的小数部分(包括一个小数点和一位或多位数字),最后还可以有一个可选的指数部分,即 e 后跟一位或多位数字。当然,这并不是唯一的解决方案,因为可以用多种方式编写正则表达式来匹配这一组数字格式。 |