前言
正则表达式是对字符串(包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”))操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。正则表达式是一种文本模式,该模式描述在搜索文本时要匹配的一个或多个字符串。
正则表达式的特点是:
- 灵活性、逻辑性和功能性非常强;
- 可以迅速地用极简单的方式达到字符串的复杂控制。
- 对于刚接触的人来说,比较晦涩难懂。
特殊字符:
^ 开始 只能写在最前面
$ 结束 只能写在最后面
* 前面的字符出现任意次(包括0次)
+ 前面的字符出现1+次
? 前面的字符出现最多一次(0,1)
{m} 前面的字符出现m次
{m,n} m次到n次 {m,}最少m次 {0,n}最多n次
[] 其中所有的字符任意出现一次
. 通配(除了换行符\n)、
\ 转义符 能够转义掉特殊字符的特殊含义
\和普通字符组合 具有特殊含义 \d 代表数字[0-9] \D 代表 非数字
\w 数字字符下划线[0-9a-zA-Z] \W 非数字字母下划线
规则修饰符i 不区分大小写 //例:/abc/i
规则修饰符g 全文查找 //例:/abc/ig
test(字符串) 返回true/false
match(正则) 返回数字/null
常用正则:
名称 | 正则 | |
---|---|---|
手机号正则: | /^1[3-9]\d{9}$/ | |
用户名: | /^(\w | \d){3,16}$/ |
密码: | /^(\w\d){6,16}$/ | |
邮箱: | /\w+([-+.]\w+)@\w+([-.]\w+).\w+([-.]\w+)*/ | |
网址: | ^[a-zA- z]+://(\w+(-\w+))(\.(\w+(-\w+)))(\?\S)?$ | |
中文字符: | /[\u4e00-\u9fa5]/ |
验证数据是否符合正则规则
正则规则.test(字符串) 返回true/false
console.log(reg.test(str));
字符串.match(正则) 返回数组/null
console.log(str.match(reg));
`preg_match()` 函数用于执行第一个正则表达式匹配 `preg_match_add()` 函数用于匹配全部 *参数1:要搜索的模式,字符串形式(设置好的正则) *参数2:输入字符串 *参数3:搜索结果
栗子:
$html="123afg2sxv";
$reg="/a/";
preg_match_all($reg,$html,$arr)
echo "<pre>"; print_r($arr); echo "<pre>";
其他
子查询() 能够查到括号中的内容 贪婪模式:尽可能多的匹配(默认) 修饰符U,取消贪婪模式(尽可能的少匹配) 栗子:
/<h1>(.*)<\/h1>/U;
修饰符s 能够让.
匹配换行符(真正的通配符)