基础 - 正则表达式
前言
⚠️ 该篇博客主要是方便后续查验
推荐的正则表达式校验网站:https://regex101.com/
⭐️ 可以把已经匹配到的字符当作是被剔除了,剩余待匹配字段已经没有它了
介绍
**正则表达式(Regular Expression)**是一种文本模式,包括普通字符(例如,a 到 z 之间的字母或者 0 到 9 的数字)和特殊字符(称为"元字符")。
正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。
正则表达式的功能:
- 校验数据的有效性(例如:校验邮箱格式)
- 识别符合要求的文本内容
- 文本的切割及替换
基本使用
元字符就是指那些在正则表达式中具有特殊意义的专用字符
常用的元字符
元字符 | 说明 |
---|---|
. | 匹配除换行符以外的任意字符 |
\w | 匹配字母、数字或下划线 |
\W | 匹配非字母、数字和下划线 |
\d | 匹配数字 |
\D | 匹配非数字 |
\s | 匹配任意的空白符 |
\S | 匹配任意的非空白符 |
? | 重复0次或1次 |
* | 重复0次或多次 |
+ | 重复一次或更多次 |
{n} | 重复匹配n次 |
{n,} | 重复匹配至少n次 |
{n,m} | 重复匹配n到m次 |
\b | 匹配单词的开始或结束 |
^ | 匹配字符串的开始 |
$ | 匹配字符串的结束 |
[] | 匹配字符集合中的任意一个字符,内可使用^表示取反 |
| | 逻辑“或”,匹配其左右两边的任意一个子表达式 |
字符转义
- 正则中本身有一些特殊字符已经被专用了,所以想匹配元字符本身或者正则中某些特殊字符的话,需要使用
\
转义。 - 例如:匹配
*
这个字符则使用\*
,匹配\
这个字符,使用\\
。 - 需要转义的字符:
$
,(
,)
,*
,+
,.
,[
,]
,?
,\
,^
,{
,}
,|
案例详解
常用正则
正则表达式 | 说明 |
---|---|
^1[3-9]\d{9}$ | 手机号验证(中国),例如 15161112222 |
^[1-9]\d{5}\d{4}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}[\dXx]$ | 18位身份证验证,格式ddddddyyyymmddxxxy,dddddd为地区码,yyyymmdd为出生日期,xxx为顺序码,y为校验码(数字或者X) |
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$ | 邮箱验证,例如:user@example.com |
案例 .
功能:匹配除换行符以外的任意字符
匹配文本 | abcaab_ |
---|---|
正则表达式 | ab. |
匹配数量 | 2 |
匹配结果 | abc,ab_ |
案例 \w
功能:匹配字母、数字或下划线
匹配文本 | abc\w中文_- |
---|---|
正则表达式 | \w.\\w |
匹配数量 | 1 |
匹配结果 | bc\w |
案例 \W
功能:匹配非字母、数字和下划线(与\w相反)
匹配文本 | ab\ @#b_1中文 |
---|---|
正则表达式 | \W. |
匹配数量 | 3 |
匹配结果 | \ ,@#,中文 |
案例 \d
功能:匹配数字
匹配文本 | 123. |
---|---|
正则表达式 | \d\. |
匹配数量 | 1 |
匹配结果 | 3. |
案例 \D
功能:匹配非数字
匹配文本 | abc2abcdhj$3 |
---|---|
正则表达式 | \D\w.\d |
匹配数量 | 2 |
匹配结果 | abc2,hj$3 |
案例 \s
功能:匹配任意的空白符
案例二
匹配文本 | abc ab @#$ |
---|---|
正则表达式 | \s\w |
匹配数量 | 1 |
匹配结果 | a |
案例 \S
功能:匹配任意的非空白符
匹配文本 | abc ab @#$ |
---|---|
正则表达式 | \S\w |
匹配数量 | 2 |
匹配结果 | ab,ab |
案例 ?
功能:重复0次或1次
匹配文本 | http123https |
---|---|
正则表达式 | https? |
匹配数量 | 1 |
匹配结果 | http,https |
案例 *
功能:重复0次或多次
匹配文本 | test123aa中文 |
---|---|
正则表达式 | \d.* |
匹配数量 | 1 |
匹配结果 | 123aa中文 |
案例 +
功能:重复一次或更多次
匹配文本 | test123aa中文 |
---|---|
正则表达式 | \d.+ |
匹配数量 | 1 |
匹配结果 | 123aa中文 |