正则表达式
什么是正则表达式?
- 正则表达式又称规则表达式,正则表达式是对字符串(包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”))操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。
常见的标准字符说明
标准字符 | 含义 |
---|---|
\d | 匹配0-9之间的任意一个数字,相当于[0-9] |
\D | 匹配非数字字符[^0-9] |
\w | 匹配任意一个字母、数字或下划线相当于[A-Za-z0-9] |
\W | 匹配非字母、数字或下划线相当于[^A-Za-z0-9] |
\s | 匹配任何空白字符,例如空格,制表符,换页符等,相当于?[\r\n\f\t\v] |
\S | 匹配任何非空白字符,相当于[^\r\n\f\t\v] |
\n | 匹配换行符 |
\r | 匹配回车 |
\t | 匹配制表符 |
\v | 匹配垂直制表符 |
\f | 匹配换页符 |
常用的特殊字符说明
特殊字符 | 含义 |
---|---|
\ | 转义字符,将下一个字符标记为特殊字符 |
^ | 匹配字符串开始的位置 |
$ | 匹配字符串结束的位置 |
* | 零次或多次匹配前面的字符或者子表达式 |
+ | 一次或多次匹配前面的字符或者子表达式 |
? | 零次或一次匹配前面的字符或者子表达式 |
. | 匹配除”\n\r”以外的任何单一字符 |
| | 或 |
[] | 匹配字符组中的字符 |
() | 分组 |
{n} | 重复匹配n次 |
{n,} | 重复n次或更多次 |
{n,m} | 重复n到m次 |
模式匹配符
特殊字符 | 含义 |
---|---|
/i | 不区分大小写 (insensitive) |
/g | 全局匹配 (global) |
/m | 多行模式 (mult) |
两种匹配模式
- 正则表达式的默认模式是贪婪模式,即尽可能多的匹配字符。非贪婪模式顾名思义就是尽可能少的去匹配字符。在匹配字数的两次后加一个“?”问好即可。
在大家对正则表达式的一些常见的字符有了基础的了解以后,博主就给大家介绍一下一些简单的实例,方便大家加深对正则表达式的理解
所需匹配的字符 | 正则表达式 | 匹配结果 | 正则表达式含义 |
---|---|---|---|
123456abcga789cbhsauca | /[0-9]+/g | 匹配字符串中的所有数字 | |
123456abcga789cbhsauca | /[^0-9]+/g | 匹配非数字的字符 | |
123456abcga789cbhsauca | /[0-9]{1,2}/g | 匹配从匹配起的第一个数字字符起,再往后加1个字符(即:每三个数字为一组) | |
612asbdgad3456abcga789cbh6 | /^6.{0,5}/g | 匹配以6开头的除了换行符以外的5个字符 | |
612asbdgad3456abcga789cbh6axahwa | 6.{0,6}$ | ||
李杰和李莲英和李二棍子 | 李[杰莲英二棍子]* | 匹配”李”字后面包含[杰莲英二棍子]的字符任意次 |
以上就是博主为了方便大家更好的了解正则表达式的使用,给大家举的一些例子
接下来,博主就把一些比较常用的正则表达式给大家归纳一下
正则表达式 | 适用情况 |
---|---|
/(\w+):\/\/([^/:]+)(:\d*)?([^# ]*)/ | 将一个URL解析为协议、域、端口及相对路径。 |
^\w+([-+.]\w+)@\w+([-.]\w+).\w+([-.]\w+)*$ | 匹配email邮箱 |
\d{4}-\d{8}|\d{3}-\d{8} | 匹配xxx-xxxxxxxx或者xxxx-xxxxxxxx类型的电话号码 |
^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$ | 匹配手机号码 |
^[a-zA-Z]\w{5,17}$ | 字母开头,长度在6~18之间,只能包含字母、数字和下划线的密码 |
^(?=.\d)(?=.[a-z])(?=.*[A-Z]).{8,10}$ | 必须包含大小写字母和数字的组合,不能使用特殊字符,长度在8-10之间 |
\d{4}-[0-12]+-[0-31]+ | 匹配xxxx-xx-xx的日期格式 |
以上就是关于正则表达式的一些知识点,如果想查看关于正则表达式的应用,可以查看博主的另一篇博客PHP利用curl实现爬虫,最后博主就给大家安利一个比较的好的在线测试正则表达式的网站regexr