2023 © RegexOne
邮箱 | Twitter
乍一看,编写一个匹配数字的正则表达式应该很容易,对吧?
我们有\d特殊字符来匹配任何数字,我们只需要匹配小数点就可以了,对吧?对于简单的数字来说,这可能是正确的,但在处理科学或财务数字时,您通常需要处理正数和负数、有效数字、指数,甚至不同的表示形式(例如用于分隔千位和百万位的逗号)。
下面是一些您可能会遇到的不同数字格式。请注意,您必须匹配小数点本身,而不是使用点元字符匹配任意字符。如果您在跳过最后一个数字时遇到问题,请注意该数字是如何与其他数字相比结束行的。
任务 | 文本 | |
匹配 | 3.14529 | |
匹配 | -255.34 | |
匹配 | 128 | |
匹配 | 1.9e10 | |
匹配 | 123,340.00 | |
跳过 | 720p |
解决方案 | 当您考虑到小数、指数等时,此表达式的编写可能相当复杂。 对于上述示例,表达式^-?\d+(,\d+)*(\.\d+(e\d+)?)?$将匹配以可选负号开头、一个或多个数字、后跟可选逗号和更多数字、后跟可选小数部分(包括句点、一个或多个数字以及另一个可选部分,指数后跟更多数字)的字符串。 这不是唯一的解决方案,因为可以有很多表达式可以匹配这些数字字符串集。 |