正则表达式学习(2)
断言
即对匹配到的文本位置有要求
- 单词边界
\b
例:\b\w+\b
就可以精确匹配单词 - 行的开始/结束
^
表示开始$
表示结尾
- 环视
即要求匹配部分的前面或后面要满足(或不满足)某种规则
左尖括号代表看左边,没有尖括号是看右边,感叹号是非的意思
转义
- 转义字符
- 字符串转义和正则转义
- 正则中是使用反斜杠进行转义的 例:
\\d
- 括号转义
[]
和{}
只需转义开括号,()
两个都需要 例:\{1,3}\[]\(\)
- 正则中是使用反斜杠进行转义的 例:
常见正则问题和解决方案
- 匹配数字
- 用
\d
或[0-9]
表示 - 连续多个数字:
\d+
或[0-9]+
- n位数据:
\d{n}
- 至少n位:
\d{n, }
- m-n位:
\d{m, n}
- 用
- 匹配正数,负数和小数
- 匹配正数、负数和小数:
[-+]?\d+(?:\.\d+)?
- 非负整数(0和正整数):
[1-9]\d*|0
- 非正整数(0和负整数):
-[1-9]\d*|0
- 匹配正数、负数和小数:
- 浮点数
- 负浮点数:
-\d(?:\.\d+)?
- 正浮点数:
+?(?:\d+(?:\.\d+)?|\.\d+)
- 负浮点数:
- 十六进制数:
[0-9A-Fa-f]+
- 手机号码
- 限制前两位:
1[3-9]\d{9}
- 限制前三位:
1(?:3\d|4[5-9]|5[0-35-9]|6[2567]|7[0-8]|8\d|9[1389])\d{8}
- 限制前两位:
- 身份证号码
- 规则:我国的身份证号码是分两代的,第一代是 15 位,第二代是 18 位。如果是 18 位,最后一位可以是 X(或 x),两代开头都不能是 0
- 写法:
[1-9]\d{14}(\d\d[0-9Xx])
- 邮政编码(6位数字):
(?<!\d)\d{6}(?!\d)
- qq号:
[1-9][0-9]{4,9}
- 中文字符
- 规则:通过码值查找,中文的范围是 4E00 - 9FFF 之间
- 写法:
[\u4E00-\u9FFF]
- IPv4地址:
\d{1,3}(\.\d{1,3}){3}
- 日期和时间
- yyyy-mm-dd:
\d{4}-\d{2}-\d{2}
- yyyy-mm-dd:
- 邮箱:
[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+