正则表达式是一门“语言”,用于描述文本的模式,以便用于文本的匹配、检索和抓取。正则表达式是简单的,它用普通字符和一些特殊字符(元字符)来描述文本的模式,同时它又是强大的,可以高效地完成文本的处理。
许多高级语言都支持使用正则表达式,如大家使用过的Javascript和Java,C语言通过第三方函数库也可支持正则表达式,MySQL也支持在SQL语句中使用正则表达式。
本任务主要让大家熟悉正则表达式的基础知识,掌握常用文本匹配的正则表达式编写。高级的应用还需要大家自己去学习。
1、什么是正则表达式?
正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。
- 匹配:使用preg_match()或preg_match_all()函数
- 替换:使用preg_replace()函数
- 分割子串:使用preg_split()函数
2、正则表达式语法
正则表达式必须用/…/括起来。如:/^[_a-zA-Z0-9]{3,10}$/
正则表达式由普通字符和特殊字符(元字符)组成。
- 普通字符:所有不是元字符的字符,包括大小写字母、数字、标点符号和其它符号。如:/runo*b/中,runob都是普通字符。要表示元字符本身的字符,要使用转义符\,如\-。
- 元字符:在正则表达式中有含义的字符。
- ^ 匹配字符串开始;取非运算
- $ 匹配字符串结束
- [ ] 匹配多个字符中任一个
- {m,n} 重复次数 /^\d{3,}$/
- ( ) 组合正则表达式,改变组合优先顺序
- | 或运算
- * 匹配0次或多次
- + 匹配1次或多次
- ?匹配0次或1次
- - 连字符,如a-z
- . 除\r,\n以外的任意单个字符
- \ 转义符,如\\表示\字符
3、正则表达式匹配规则
- 基本模式匹配,如使用^,$确定头与结尾 /^food$/
- 使用字符簇,如[a-z]
- 确定重复出现,如,\w+,\d{10},[1-9]\d*
- 判断运算符优先级
4、常用正则表达式
(1)中国邮政编码 /^\d{6}$/ [1-9]\d{5}
(2) 手机号码 \d{11} 1[3-9]\d{9}
(3) 国内固定电话号码
(4) 身份证号 \d{17}[0-9xX]
(5) 用户名 思考:必须使用字母开头,后面可以是字母数字下划线,最多32个字符?(PHP中标识符命名规则)
(6) 学号,10位数字
(7) 正整数、整数、浮点数
5、课程预告
下周三(4.22),完成Task 15 熟悉错误调试与异常处理 任务的学习。
下周四(4.23),课堂测验。
从第11周起,我们主要介绍PHP操作MySQL数据库。