一、定界符 //
|| !! {}
二、原子
a-z A-Z 0-9 转义符 非打印字符:\f \n \r \t \v \cx
通用字符类型:
\d 任意一个十进制数字[0-9]
\D 任意一个非十进制数字[^0-9]
\w 任意一个单词字符[a-zA-Z0-9]
\W 任意一个非单词字符
\s 任意一个空白字符 [\f\n\r\t]
\S 任意一个非空白字符
[] 自定义原子表 表示任意一个 并且只生效一个 [^ ]表示排除
三、元字符 用来修饰原子 不能单独出现
* 表示匹配任意次
+ 表示匹配1次或者多次
? 表示匹配0次或1次
| 匹配多个分支选择 [a|A] 也可以[abc|ABC]
{n} 表示匹配n次
{n,m} 我爱线报网表示匹配至少n次 最多m词
{n,} 表示匹配最少n次
^或者\A 表示匹配字符串的开始
$或者\Z 表示匹配字符串的结束 例:/^abc.*abc$/表示以abc开头 以abc结尾
\b 匹配单词的定界符
\B 匹配除去单词边界以外的部分 举例$test= “this is island” 匹配第一个is是/\Bis\b/ 第二个is /\bis\b/表示两边都是边界 第三个is /\bis\B/ 左边边界右边不是边界
() 匹配整体作为一个原子,可以:
【1】第一:改变优先级
【2】将小原子变成大原子
【3】一个子模式
【4】反向引用 例子:2016-6-6 /\d{4}(-|\/)\d{2}\1\d{2}/我爱线报网 \1表示反向引用第一个()里边的模式 开头写?表示()不允许反向引用
四、模式修正符(写在定界符外边)
i 表示不区分大小写
m 多文本形式 即有多个换行符是有影响 即视为多行
s 单行文本
x 忽略空白字符
U (.*,.+)正则比较贪婪,取消贪婪模式 匹配第一个<b><b> i <b>am</b> a <b>superman</b> 也可以通过.*? 防止贪婪模式
例子:
2016-6-6 /\d{4}-\d{2}-\d{2}/
邮箱: \w[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\.)+[A-Za-z]{2,14}
手机号 /[1-9]{1}(3|4|5|7|8)[0-9]{1我爱线报网1}/
中文 /[\u4e00-\u9fa5]/
六、正则常用函数
1、匹配查找:strstr strpos substr
(1)strstr 函数搜索字符串在另一字符串中的第一次出现,并返回字符串的剩余部分
例:strstr(“I love Shanghai!”,”Shanghai”); 返回shanghai!
strstr(“Hello world!”,”world”,true); 返回hello
(2) strpos 函数查找字符串在另一字符串中第一次出现的位置。
相关函数:
stripos() – 查找字符串在另一字符串中第一次出现的位置(不区分大小写)
strripos() – 查找字符串在另一字符串中我爱线报网最后一次出现的位置(不区分大小写)
strrpos() – 查找字符串在另一字符串中最后一次出现的位置(区分大小写)
(3)substr substr(“Hello world”,6);表示从第六个字符串开始 (负数表示从尾数开始) substr(“Hello world”,0,-1) 0表示第一个字符开始 -1从字符串末端返回的长度 返回:Hello worl
2、正则匹配查找
(1)preg_match 用法:preg_match(正则,‘字符串’,[$arr]),放回0或者1,有第三个参数则把结果存到$arr里边,只查找一次,
(2)preg_macth_all 用法preg_match_all(我爱线报网正则,‘字符串’,[$arr]),查找全部,吧字符串放到$arr里边
(3)preg_grep(正则,‘数组’) 匹配数组直接返回符合正则的数组
3、分割:explode implode preg_split
exlpode(,,$str) 按照,分割
正则匹配分割 preg_split(‘正则’,‘字符串’)
4、字符串替换函数
字符串替换:str_replace() str_replace(“需要替换的”,“替换成什么”,“$str”[,$num]) $num表示替换的次数 ,也可以是数组替换数组
正则表达式替换:preg_replace() preg_replace(“需要替换的”,“替换成什么”,“我爱线报网$str”),preg_replace() 也可以通过反向引用\1 \2 或者$1、$2反向引用正则的子模式,比如替换文章中的链接变成可访问的链接
preg_replace_callback 替换回调函数,例子:
$test=”今天是2014-02-14,明年是2015-02-04″
$reg =”/(\d{4})(-\d{2}-\d{2})/ “加()表示两个子模式
function myfun($m){
return ($m[1]+1).$m[2] //$m[1]表示第一个子模式
}
preg_replace_callback($reg,”myfun”,$text);
preg_quote — 转义正则表我爱线报网达式字符
举例
1. (\d+)\.(\d+)\.(\d+)\.(\d+)/g //IP地址的正则表达式
2. “^\d+$” //非负整数(正整数 + 0)
3. “^[0-9]*[1-9][0-9]*$” //正整数
4. “^((-\d+)|(0+))$” //非正整数(负整数 + 0)
5. “^-[0-9]*[1-9][0-9]*$” //负整数
6. “^-?\d+$” //整数
7. “^\d+(\.\d+)?$” //非负浮点数(正浮点数 + 0)
8. “^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-我爱线报网9]*[1-9][0-9]*))$” //正浮点数
9. “^((-\d+(\.\d+)?)|(0+(\.0+)?))$” //非正浮点数(负浮点数 + 0)
10. “^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$” //负浮点数
11. “^(-?\d+)(\.\d+)?$” //浮点数
12. “^[A-Za-z]+$” //由26个英文字母组成的字符串
13. “^[A-Z]+$” //由26个英文字母的大写组成的字符串
14. “^[a-z]+$” //由26个英文我爱线报网字母的小写组成的字符串
15. “^[A-Za-z0-9]+$” //由数字和26个英文字母组成的字符串
16. “^\w+$” //由数字、26个英文字母或者下划线组成的字符串
17. “^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$” //email地址
18. “^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$” //url
19. /^(d{2}|d{4})-((0([1-9]{1}))|(1[1|2]))-(([0-2]([1-9]{1}))|(3[0|1]))$/ // 年-月-日
20. /^((0我爱线报网([1-9]{1}))|(1[1|2]))/(([0-2]([1-9]{1}))|(3[0|1]))/(d{2}|d{4})$/ // 月/日/年
21. “^([w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([w-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$” //Emil
22. /^((\+?[0-9]{2,4}\-[0-9]{3,4}\-)|([0-9]{3,4}\-))?([0-9]{7,8})(\-[0-9]+)?$/ //电话号码
23. “^(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{我爱线报网1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5])$” //IP地址
24.
25. 匹配中文字符的正则表达式: [\u4e00-\u9fa5]
26. 匹配双字节字符(包括汉字在内):[^\x00-\xff]
27. 匹配空行的正则表达式:\n[\s| ]*\r
28. 匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|<(.*) \/>/
29. 匹配首尾空格的正则表达式:(^\s*)|(\s*$)
30. 匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+(我爱线报网[-.]\w+)*\.\w+([-.]\w+)*
31. 匹配网址URL的正则表达式:^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$
32. 匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
33. 匹配国内电话号码:(\d{3}-|\d{4}-)?(\d{8}|\d{7})?
34. 匹配腾讯QQ号:^[1-9]*[1-9][0-9]*$
推荐阅读
友情提醒: 请尽量登录购买,防止付款了不发货!
QQ交流群:226333560 站长微信:qgzmt2