加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP正则表达式语法汇总

发布时间:2020-12-13 20:56:46 所属栏目:PHP教程 来源:网络整理
导读:行定位符、单词定界符实例用法(正则表达式字符集1) 行定位符(^和$): 行定位符就是用来描述字串的边界。"^"表示行的开始;"$"表示行的结尾。如: ^tm 这个表达式表示要匹配字串I的开始位置是行头,如:tm equal Tomorrow Moon就可以匹配,而Tomorrow Moon

行定位符、单词定界符实例用法(正则表达式字符集1)

行定位符(^和$):行定位符就是用来描述字串的边界。"^"表示行的开始;"$"表示行的结尾。如:

^tm

这个表达式表示要匹配字串I的开始位置是行头,如:tm equal Tomorrow Moon就可以匹配,而Tomorrow Moon equal tm就不可以匹配

tm$

则后者可以匹配而前者不可以。如果想要匹配的字串可以出现在字符串的任意部分,那么可以直接写成:

tm

?

单词定界符(b、B):

使用tm可以匹配在字符串中出现的任何位置。那么类似html,utmost中的tm也会被查找出来。但现在需要匹配的是单词tm,而不是单词的一部分。这时可以使用单词定界符b,表示要查找的字串为一个完整的单词,如:

btmb

还有一个大写的B,意思和b相反。它匹配的字串不能是一个完整的单词,而是其他单词或字串的一部分。如:

BtmB

?

非打印字符、特殊字符、限定符实例用法

非打印字符

cx 匹配由x指明的控制字符。例如, cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 ‘c’ 字符。

f 匹配一个换页符。等价于 x0c 和 cL。

n 匹配一个换行符。等价于 x0a 和 cJ。

r 匹配一个回车符。等价于 x0d 和 cM。

s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ fnrtv]。

S 匹配任何非空白字符。等价于 [^ fnrtv]。

t 匹配一个制表符。等价于 x09 和 cI。

v 匹配一个垂直制表符。等价于 x0b 和 cK。

?

特殊字符

$ 匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 ‘n’ 或 ‘r’。要匹配 $ 字符本身,请使用 $。

( ) 标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,请使用 ( 和 )。

* 匹配前面的子表达式零次或多次。要匹配 * 字符,请使用 *。

+ 匹配前面的子表达式一次或多次。要匹配 + 字符,请使用 +。

. 匹配除换行符 n之外的任何单字符。要匹配 .,请使用 。

[ 标记一个中括号表达式的开始。要匹配 [,请使用 [。

? 匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。要匹配 ? 字符,请使用 ?。

将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符。例如, ‘n’ 匹配字符 ‘n’。’n’ 匹配换行符。序列 ‘’ 匹配 “”,而 ‘(’ 则匹配 “(”。

^ 匹配输入字符串的开始位置,除非在方括号表达式中使用,此时它表示不接受该字符集合。要匹配 ^ 字符本身,请使用 ^。

{ 标记限定符表达式的开始。要匹配 {,请使用 {。

| 指明两项之间的一个选择。要匹配 |,请使用 |。

?

限定符

有*或+或?或{n}或{n,}或{n,m}共6种。

?*、+和?限定符都是贪婪的,因为它们会尽可能多的匹配文字,只有在它们的后面加上一个?就可以实现非贪婪或最小匹配。

* 匹配前面的子表达式零次或多次。例如,zo* 能匹配 “z” 以及 “zoo”。* 等价于{0,}。

+ 匹配前面的子表达式一次或多次。例如,’zo+’ 能匹配 “zo” 以及 “zoo”,但不能匹配 “z”。+ 等价于 {1,}。

? 匹配前面的子表达式零次或一次。例如,”do(es)?” 可以匹配 “do” 或 “does” 中的”do” 。? 等价于 {0,1}。

{n} n 是一个非负整数。匹配确定的 n 次。例如,’o{2}’ 不能匹配 “Bob” 中的 ‘o’,但是能匹配 “food” 中的两个 o。

{n,} n 是一个非负整数。至少匹配n 次。例如,’o{2,}’ 不能匹配 “Bob” 中的 ‘o’,但能匹配 “foooood” 中的所有 o。’o{1,}’ 等价于 ‘o+’。’o{0,}’ 则等价于 ‘o*’。

{n,m} m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。例如,”o{1,3}” 将匹配 “fooooood” 中的前三个 o。’o{0,1}’ 等价于 ‘o?’。请注意在逗号和两个数之间不能有空格。

?

正则表达式字符簇

[a-z] //匹配所有的小写字母

[A-Z] //匹配所有的大写字母

[a-zA-Z] //匹配所有的字母

[0-9] //匹配所有的数字

[0-9.-] //匹配所有的数字,句号和减号

[ frtn] //匹配所有的白字符

?

PHP的正规表达式有一些内置的通用字符簇,列表如下:

[[:alpha:]] 任何字母

[[:digit:]] 任何数字

[[:alnum:]] 任何字母和数字

[[:space:]] 任何白字符

[[:upper:]] 任何大写字母

[[:lower:]] 任何小写字母

[[:punct:]] 任何标点符号

[[:xdigit:]] 任何16进制的数字,相当于[0-9a-fA-F]

?

子表达式、子表达式计数、分支用法浅析

子表达式

例如:

(very) *large

可以匹配"large","very large","very very large"等。

?

子表达式计数

例如:

(very){1,3}

表示匹配“very”,“very very”和“very very very”。

?

分支

例如,如果要匹配com、edu、或net,就可以使用如下所示的表达式:

com|edu|net

?

与Perl兼容的正则表达式函数

字符串的匹配与查找

preg_match()函数和preg_match_all()函数

<?php

$str = 'cyy is cute.';
$preg = '/bw{2}/'$num1 = preg_match($preg,$str,1)">$str1);
echo $num1.'<br>';
var_dump();

$num2 = preg_match_all($str2$num2.'<br>'$str2);

匹配结果如下:

?

?

preg_quote()函数

函数功能:该函数讲字符串str中的所有特殊字符进行自动转义。如果有参数delimiter,那么该参数

所包含的字串也将被转义。函数返回转义后的字串。

<?$str = '!、$、^、*、+、.、[、]、、/、cyy、<、>'$str2 = 'cyy'$res = preg_quote($res.'<br>';

?

函数preg_grep()

<?$preg = '/^d{3,4}-d{7,8}$/'$arr = array('043212345678','0431-7654321','12345678');
preg_grep($arr$res);

在数组$arr中匹配具有正确格式的电话号(010-1234****等),并保存到另一个数组中。

?

字符串处理函数strstr()、strpos()、strrpos()、substr()

如果只是查找一个字符串中是否包含某个子字符串,建议使用strstr()或strpos()函数,如果只是简单地从一个字符串中取出一段子字符串,建议使用substr()函数。虽然PHP提供的字符串处理函数不能完成复杂的字符串匹配,但处理一些简单的字符串匹配,执行效率则要比使用正则表达式稍高一些。

函数strstr()搜索一个字符串在另一个字符串中的第一次的出现,该函数返回字符串的其余部分(从匹配点)。如果未找到所搜索的字符串,则返回FALSE。该函数对大小写敏感,如需进行大小写不敏感的搜索,可以使用stristr()函数。该函数有两个参数,第一个参数提供被搜索的字符串,第二个参数为所搜索的字符串,如果该参数是数字,则搜索匹配数字ASCII值的字符。该函数的使用代码如下所示:

<?php

echo strstr('cyy is cute.','cyy').'<br>'chr(115));

?

?

php用正则表达式匹配中文

gbk编码下汉字正则

1.判断字符串是否全是汉字

<?$str1 = '全部是中文'if (preg_match_all("/^([x81-xfe][x40-xfe])+$/",1)">$str1,1)">$match)) {
  echo '全部是中文';
}else{
  echo '不全是中文';
}

echo '<br>';

$str2 = '全部是中文~'$str2,1)">;
}

?

2.判断字符串是否包含汉字

$str1 = '含有中文'preg_match("/^([x81-xfe][x40-xfe])+$/",1)">echo '含有中文'echo '不含有中文'$str2 = '~~~'echo '全含有中文';
}

?

UTF编码下匹配全部是中文:

preg_match("/^[x{4e00}-x{9fa5}]+$/u",1)">;
}

?

?

UTF编码下匹配含有中文:

$str2 = '~';
}

?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读