我是靠谱客的博主 精明人生,最近开发中收集的这篇文章主要介绍正则表达式及手机号码的正则表达式,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录
一、考点:
1. 手机号码的正则表达式编写
2. 延伸:正则表达式组成及编写方法
1) 正则表达式的作用:分割、查找、匹配、替换字符串
2)正则表达式的组成部分:
① 分隔符:
② 通用原子:
③ 元字符:
④ 模式修正符:
3) 后向引用:将前面匹配到的放到后面
4) 贪婪模式
取消 贪婪模式 的方法:
5) 正在表达式PCRE函数
6) 中文匹配
① UTF-8汉字编码范围是:0x4e00-0x9fa5; UTF-8要使用 u模式修正符 使模式字符串被当成 UTF-8。
② 在ANSI(gb2312)环境下, 0xb0-0xf7, 0xa1-0xfe;在ANSI(gb2312)环境下,要使用chr将ASCII码转换为字符
二、解题方法
三、真题
1. 至少写出一种验证 139手机号码的正则表达式。
2. 请写出一个正则表达式,取出页面中所有 `img标签` 中的 `src值`。
一、考点:
1. 手机号码的正则表达式编写
2. 延伸:正则表达式组成及编写方法
1) 正则表达式的作用:分割、查找、匹配、替换字符串
2)正则表达式的组成部分:
① 分隔符:
1) 正斜线(/)【推荐使用】;
2) hash符号(#);
3) 取反符号(`);

② 通用原子:
1) d: 0-9
2) D: 除了0-9

3) w: 数字、字母、下划线
4) W: 除了数字、字母、下划线

5) s: 空白符
6) S: 除了空白符

③ 元字符:
1) . : 除了 换行符 之外的任意符
2) * : 出现0次、1次或者多次
3)? : 出现0或1次
4) ^ : 必须以其开头
5) $ : 必须以其结尾
6) + : 出现1次或多次
7) {n} : 恰巧出现n次
8) {n,} : >= n次
9) {n, m} : n <= 出现次数 <= m
10) [] : 集合【如:[abc] 表示匹配 a或b或c】
11) ():互相引用,即匹配一个整体【如:(abc) 表示同时匹配abc】
12) [^] : 取反【如:[^abc] 表示除了a/b/c】
13) | : 或者
14) [-] : 匹配一个范围【如:[0-9] 表示匹配0-9】

④ 模式修正符:
1) i : 不区分大小写
2) m : 将字符串通过分隔符进行分割【即将字符串中的每一行分别进行匹配】
3) e : 在进行 preg_replace时,可以将匹配的内容进行PHP语法的处理【PHP7.0起废除】
4) s : 修正圆点元字符(.)和换行
5) U : 取消贪婪模式
6) x : 忽略模式中的空白符
7) A : 必须以该模式开头
8) D : 修正 $对n的忽略
9) u : 当进行uft-8中文匹配的使用,可以使用

3) 后向引用:将前面匹配到的放到后面
$str = '<b>abc</b>';
$pattern = '/<b>(.*)</b>/'; // 正则表达式
preg_replace($pattern, '\1', $str); // 两个反斜线是为了防止将 1 转义掉;1表示匹配第一个括号中的内容;

4) 贪婪模式
取消 贪婪模式 的方法:
① 使用 . * ? 取消贪婪模式

$str = '<b>abc</b><b>bcd</b>';
// 匹配每一个<b>标签中的内容
$pattern = '/<b>.*?</b>/'; // 匹配到了abc和bcd(从<b>开始,匹配到了abc,遇到</b>结束;再次遇到<b>开始,匹配到了bcd,遇到</b>结束)
preg_replace_all($pattern, '\1', $str);

②使用 . * 后面加 U 取消贪婪模式

$str = '<b>abc</b><b>bcd</b>';
$pattern = '/<b>.*</b>/U';

注:不可以同时使用 . * ? 和 U 来取消贪婪;因为 . * ? 代表取消贪婪模式,如果再加一个 U 又变成了贪婪模式,双重否定表肯定。


5) 正在表达式PCRE函数
preg_match(); // 执行匹配正则表达式
preg_match_all(); // 执行一个全局正则表达式匹配
preg_replace(); // 执行一个正则表达式的搜索和替换
preg_split(); // 通过一个正则表达式分隔字符串

6) 中文匹配
① UTF-8汉字编码范围是:0x4e00-0x9fa5; UTF-8要使用 u模式修正符 使模式字符串被当成 UTF-8。
// 该中文为UTF-8下的中文
$str = '中文';
// UTF-8进行匹配
$pattern = '/[x{4e00}-x{9fa5}]+/u'; // 匹配一次或多次,不区分大小写
preg_match($pattern, $str, $match);
var_dump($match);

运行结果:

 

② 在ANSI(gb2312)环境下, 0xb0-0xf7, 0xa1-0xfe;在ANSI(gb2312)环境下,要使用chr将ASCII码转换为字符
$str = '中文';
$pattern = '/['.chr(0xb0).'-'.chr(0xf7).']['.chr(0xa1).'-'.chr(0xfe).']/';
preg_match($pattern, $str, $match);
var_dump($match);

运行结果:

 

注:由于我的字符集编码是 UTF-8,因此在执行的时候只会匹配到一个 问号


二、解题方法
1) 先写出一个要匹配的字符串;
2) 自左向右的顺序使用正则表达式的原子核元字符进行拼接;
3) 最终加入模式修正符;
4) 不可死记硬背模式;
5) 练习常见正则表达式(URL、Email、IP地址、手机号码等)。


三、真题
1. 至少写出一种验证 139手机号码的正则表达式。
// 13988888888
$str = '13988888888';
$pattern = '/^139d{8}$/';
preg_match($pattern, $str, $match);
var_dump($match);

运行结果:

 

若将字符串中的 9 改为 7,则代码如下:

$str = '13788888888';
$pattern = '/^139d{8}$/';
preg_match($pattern, $str, $match);
var_dump($match);

运行结果:

 


2. 请写出一个正则表达式,取出页面中所有 img标签 中的 src值。
$str = '<img alt="狗狗" id="dog" src="dog.jpg" />';
$pattern = '/<img.*?src="(.*?)".*?/?>/i';
preg_match($pattern, $str, $match);
var_dump($match);

运行结果:

 

转载于:https://www.cnblogs.com/ihuangjianxin/p/11155392.html

最后

以上就是精明人生为你收集整理的正则表达式及手机号码的正则表达式的全部内容,希望文章能够帮你解决正则表达式及手机号码的正则表达式所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部