正则表达式的常见应用

在写正则表达式时,建议先从简单开始,反复测试,逐渐丰富表达式,直至完全符合要求。由于正则表达式的灵活性,符合某一匹配要求的正则表达式并不止一个。

字符串为中文

利用正则表达式,可以检测中文,如下面的表达式,将只匹配纯中文字符串:

$pattern = '/^[\x80-\xff]{3,}$/';

在这个表达式中,我们使用了表示位置的元字符和表示范围和数量的元字符的组合,使得其仅匹配中文,还可以在数量范围中,指定字符串长度。

为数字添加千分符

利用正则表达式,将123456这样的数字变为123,456,如:

$pattern = '/(?<=\d)(?=(\d\d\d)+[. ])/';
// $pattern = '/(?<=\d)(?=(\d\d\d)+\b)/';
$string  = 'eeeddfh 1234y45886.56 123445886.56 dfdfdf';
echo preg_replace($pattern, ',', $string), "<br />";

上面的正则表达式,匹配的是位置,其中:

(?=(\d\d\d)+[. ])

表示的是三位数字之前的位置:

(?<=\d)

表示的某个数字之后的位置。和前面的位置结合在一起,还是表示位置:指的是一个数字后,三个数字前的位置。

检验密码

如何让密码必须为包含大写字母、小写字母、数字,同时最少6位?正则表达式如下:

$pattern = '/(?=.*?[a-z])(?=.*?[A-Z])(?=.*?\d)[A-Za-z\d]{6,}/';

其中最关键的是

(?=.*?[a-z])

它匹配的是小写字母前的任意位置。

(?=.*?[a-z])(?=.*?[A-Z])(?=.*?\d)

表示目标字符串中必须要有字母和数字。

检验电子邮件地址

邮箱地址的正则模式,可以分成@符号前后两大部分:

$pattern = '/^\w+[&\-_.]?\w+@\w+([\w\-.]+)?\.\w+/';

匹配HTML中的内容

$pattern = '/<a\s*href="(.*?)".*?>(.*?)<\/a>/s';
$string  = '<a href="/skc/contents/9/526.html" target="_blank">关于召开中央高校基本科研业务费专项资金项目(社会科学类)主持人会议的通知</a></span><span style="float:right;">2014-04-16</span></li><div class="clearfloat"></div><li><span style="float:left;"><img src="style/images/a.jpg" style="margin-right:10px;" /><a href="/skc/contents/9/525.html" target="_blank">关于转发《关于推动中国梦理论研究的通知》的通知</a></span><span style="float:right;">2014-04-10</span></li>';

results matching ""

    No results matching ""