正则匹配一些特殊的数学类型
一、匹配小数
^\d+\.\d+$
解释:
1. ^:以**开头
2. ^\d 以数字开头
3. ^\d+ 以数字开头且至少包含一个 >= 1
4. ^\d+\. 随后匹配一个小数点,小数点必须加上 '\'转义符,因为单独的 . 在正则里表示任意字符
5. ^\d+\.\d 随后必须跟上数字
6. ^\d+\.\d+ 跟上的数字个数必须 >= 1
7. ^\d+\.\d$且只能以数字结尾
二、匹配特殊的整数
此处的特殊是指 在js中 Number.isInteger 会将小数点后面全为0的数字也判定为整数
实现Number.isInteger 的正则方法
^\d+\.?0*?$
解释:
1. ^ 以**开头
2. ^\d 以数字开头
3. ^\d+ 以数字开头且至少包含一个 >= 1
4. ^\d+\. 随后匹配一个小数点,小数点必须加上 '\'转义符,因为单独的 . 在正则里表示任意字符
5. ^\d+\.? 多出来的?表示匹配 . 有 0 或 1 个
6. ^\d+\.?0 随后只能跟数字 0
7. ^\d+\.?0* 数字 0 的数量为 0 到多个
8. ^\d+\.?0*? 可以包含 `数字 0为 0 到多个` 的情况 为 0 次或是 1 次
9. ^\d+\.?0*?$ 以零结尾
三、提取小数点后面的数字
(?<=^\d+\.)(\d+$)
此处用到了正向后行断言,即先行断言从左往右看,后行断言从右往左看。正向后行断言:(?<=表达式)