问题 1:匹配十进制数字

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

我们有\d特殊字符来匹配任何数字,我们只需要匹配小数点就可以了,对吧?对于简单的数字来说,这可能是正确的,但在处理科学或财务数字时,您通常需要处理正数和负数有效数字指数,甚至不同的表示形式(例如用于分隔千位和百万位的逗号)。

下面是一些您可能会遇到的不同数字格式。请注意,您必须匹配小数点本身,而不是使用点元字符匹配任意字符。如果您在跳过最后一个数字时遇到问题,请注意该数字是如何与其他数字相比结束行的。

练习 1:匹配数字
任务 文本  
匹配 3.14529 To be completed
匹配 -255.34 To be completed
匹配 128 To be completed
匹配 1.9e10 To be completed
匹配 123,340.00 To be completed
跳过 720p To be completed
解决方案

当您考虑到小数、指数等时,此表达式的编写可能相当复杂。

对于上述示例,表达式^-?\d+(,\d+)*(\.\d+(e\d+)?)?$将匹配以可选负号开头、一个或多个数字、后跟可选逗号和更多数字、后跟可选小数部分(包括句点、一个或多个数字以及另一个可选部分,指数后跟更多数字)的字符串。

这不是唯一的解决方案,因为可以有很多表达式可以匹配这些数字字符串集。

解决上述任务以继续下一个问题,或阅读解决方案