文章目录
- 一、概念
- 二、作用
- 三、语法规则
- 3.1定义规则
- 3.2符号简介
- 3.3preg_match用法详解
- 3.4详解元字符
- 3.4.1 \d和[0-9]
- 3.4.2 \D和[^0-9]
- 3.4.3^和$
- 3.4.4*代表出现0次或者多次
- 3.4.5+代表出现1次或者多次
- 3.4.5?代表出现0次或者1次
- 3.4.6{n}
- 3.4.7{n,}
- 3.4.8{n,m}
- 3.4.9点号(.)
- 3.5.0 x|y
- 3.5.1 [xyz]
- 3.5.2 [^xyz]
- 3.5.3\b
- 3.5.4\s
- 3.5练习
- 3.5.1手机号验证案例
- 3.5.2用户名验证案例
- 3.5.3邮箱验证
- 四、高级运用
- 4.1反向引用
- 4.2贪婪模式
- 4.3禁止贪婪模式
- 4.4禁止贪婪模式案例
一、概念
正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。
二、作用
实际当中主要用于下面几个方面:
1、注册页面判断用户输入的内容是否符合验证规则
2、从整体字符串中看是否包含指定的字符串
3、找到符合规则的字符串进行替换
三、语法规则
3.1定义规则
3.2符号简介
正则表达式可以有普通符号和元字符组成。
普通字符如下:
‘/a/’代表你就要匹配字符a
‘/a7/’代表你就要匹配字符a7
元字符:
是具有特殊意义的符号
‘/\d/’ 代表要找寻数字
匹配的方法:
preg_match(reg,reg,reg,str,[$arr]);
$reg就是自己定义的正则表达式
$str是自己要查询的字符串
$arr是匹配到的结果
下面是各种符号的用法:
http://tool.oschina.net/uploads/apidocs/jquery/regexp.html
3.3preg_match用法详解
preg_match()只要找到一次符合正则表达式的结果就终止了,不会再往下匹配
preg_match_all()是匹配一次成功以后不会终止,会一直匹配到完
\d和[0-9]是一个意思
3.4详解元字符
3.4.1 \d和[0-9]
代表数字 参照上面
3.4.2 \D和[^0-9]
\D代表非数字和[^0-9]是一个意思
^在中括号中代表非
3.4.3^和$
^如果直接放在定界符前面代表以。。。开头
$代表以。。。。结尾
3.4.4*代表出现0次或者多次
zo*能匹配“z”以及“zoo”。*等价于{0,}。
3.4.5+代表出现1次或者多次
zo+”能匹配“zo”以及“zoo”,但不能匹配“z”。+等价于{1,}。
3.4.5?代表出现0次或者1次
“do(es)?”可以匹配“does”或“does”中的“do”。?等价于{0,1}。
3.4.6{n}
{n}代表固定出现n次
“o{2}”不能匹配“Bob”中的“o”,但是能匹配“food”中的两个o。
3.4.7{n,}
{n,}代表最少出现n次,多者不限
o{2,}”不能匹配“Bob”中的“o”,但能匹配“foooood”中的所有o。“o{1,}”等价于“o+”。“o{0,}”则等价于“o*”
3.4.8{n,m}
{n,m}代表最少出现n次,最多出现m次
“o{1,3}”将匹配“fooooood”中的前三个o。“o{0,1}”等价于“o?”。请注意在逗号和两个数之间不能有空格
3.4.9点号(.)
表示匹配除了\n(换行符以外的任意单个字符)
如果要表示真正的点号必须用.
3.5.0 x|y
竖线代表是或者的意思
3.5.1 [xyz]
[xyz]点匹配xyz中的任意一个字符
3.5.2 [^xyz]
[^xyz]代表除了x y z以外的任意单个字符
3.5.3\b
\b代表匹配单词的边界
如果是如下什么也匹配不到
3.5.4\s
\s匹配任何空白字符,包括空格、制表符、换页符等等。等价于[ \f\n\r\t\v]。
3.5练习
自己一个正则表达式,验证手机号11位 都是数字
3.5.1手机号验证案例
3.5.2用户名验证案例
用户名可以是数字 字母 下划线 中横线 个数是3-8位
3.5.3邮箱验证
四、高级运用
4.1反向引用
在正则表达式中出现小括号,是把小阔号中的内容当做子单元来使用
示例:
比如:你的字符串$str=‘aaaahttp://www.baidu.comdddd’;
然后你把里面的网址匹配出来替换成一个a标签
preg_replace(正则表达式,替换成什么,源字符串)
4.2贪婪模式
正则表达式里会尽可能多的匹配的元素
4.3禁止贪婪模式
让正则表达式尽可能少的匹配结果
4.4禁止贪婪模式案例
如果我们这样写会尽可能多的匹配
我们让它尽可能少的匹配