一、什么是正则表达式
正则表达式是一种用于搜索、匹配、替换某种文本的字符串模式,常用于处理文本数据、校验输入数据等。在PHP中,可以使用preg系列函数(preg_match、preg_replace等)处理正则表达式。
二、正则表达式语法
正则表达式语法包含了一些特定的字符和语法规则,常用的语法规则包括:
- 字符匹配:使用单个字符匹配特定的字符,如字符a匹配输入字符串中的字符a。
- 字符集合:使用字符集合匹配一组字符,如[abc]匹配输入字符串中的字符a、b、c。
- 量词:用于指定字符或字符集合出现的次数,如a{3}匹配aaa。
- 选择符:用于匹配多个可选的内容,如a|b匹配a或b。
- 分组:用于对正则表达式的一部分进行分组,方便后续操作,如(a|b){3}匹配aaa、aab、aba等。
- 反义:用于匹配除了指定字符或字符集合之外的内容,如[^abc]匹配输入字符串中除了a、b、c之外的字符。
三、实例演示
1. 匹配手机号码
$pattern = '/^1[3-9]\d{9}$/'; $mobile = '13912345678'; if(preg_match($pattern, $mobile)){ echo '匹配成功'; }else{ echo '匹配失败'; }
说明:
该正则表达式使用了量词和字符集合,匹配以1开头,第二位为3-9的数字,后续跟9位数字的手机号码。因为手机号码格式较为固定,所以可以使用正则表达式进行校验。
2. 替换HTML标签
$pattern = '/<[^>]+>/'; $content = '这是一段有着大标题的文本
'; $result = preg_replace($pattern, '', $content); echo $result;
说明:
该正则表达式使用了字符集合和量词,匹配一段HTML标签(以<开头,非>字符的内容,以>结尾)。在替换时,将匹配到的标签替换成空字符,即删除了所有HTML标签。
3. 提取URL链接中的域名
$pattern = '/[a-zA-z]+:\/\/[^\s]*/'; $link = '这是一篇示例文章,请阅读原文获取更多信息。'; preg_match($pattern, $link, $matches); $domain = parse_url($matches[0])['host']; echo $domain;
说明:
该正则表达式使用了字符集合、量词和分组,匹配一段URL链接(包括协议和域名,后续可能会有其他内容)。在获取到匹配结果之后,使用parse_url函数解析出域名部分,即可获取到该URL链接对应的域名。