«

全面解读php-正则表达式

TLYAN 发布于 阅读:2229 见闻


一、正则表达式基础内容

注:

1、通用原子:

 2、元字符:

 3、模式修正符

 示例:

现在需要正则验证一个input框,我想输入的是非整数就自动变成空值。

正则如下;

# 不加入/g,则只返回第一个匹配,无论执行多少次均是如此,如果加入g,则第一次执行也返回第一个匹配,再执行返回第二个匹配,依次类推。 #/[^0-9]/g,这个正则表达式的意思是全局匹配非数字类型和非-的字符。 /[^0-9|-]/g

 

 匹配到该正则后,就将input的值置空即可。

二、后项引用

如果想只去除掉b标签,只保留里面的字符串,这里就需要用到后项引用。怎么样后项引用呢,就是将 .* 括起来,然后在匹配的时候,写上 \1 ,\1 代表第一个括号里面匹配到的内容,当然为了防止 \ 将 1 转义掉,所以我们使用 \\1 .

 三、贪婪模式

我们这是想匹配到每一个 b 标签,即<b>abc</b> 和 <b>bcd</b>,

//如果使用下面的正则来匹配的话,会匹配出<b>abc</b><b>bcd</b>. $pattern = '/<b>.*<\/b>/';

所以此处我们要使用 .*?来取消贪婪,?代表匹配前面的内容 0 次或者 1次。

//正则表达式改为 $pattern = '/<b>.*?</b>/';
//当然取消贪婪还有一种写法:就是在后面加上一个 U ,即: $pattern = '/<b>.*</b>/U';

但是切记不能 .*? 和 U 一起用。

四、延伸重点

1、常见PCRE函数

2、中文匹配

示例:

$str = '中文';

a、使用utf-8匹配中文: 

$pattern = '/[\x{4e00}-\x{9fa5}]+/u';

b、使用GB2312匹配中文: 

$pattern = '/[' . chr(0xb0) . '-' . chr(0xf7) . '][' .chr(0xa1) . '-' . chr(0xfe) .']/';
preg_match($pattern, $str, $match); 

3、写正则表达式的思路

4、示例:

PHP 正则