正则表达式
正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式。
正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。主要用于:字符匹配的
正则表达式在注册用户名,邮箱格式验证, waf(web防火墙规则) 等等……很多地方都会用到
正则表达式语法讲解
电话:13\d{9}
QQ号码: [1-9]\d{5,12}
查找,匹配, 代码审计, 采集
preg_match
preg_match_all
1 定义字符集
[a-z]
[abc] a b c
[a-zA-Z]
[0-9]
[3-9]
[a-zA-Z0-9_]
[123]+
特殊字符集
$: 匹配输入字符串的结尾位置
^: 表示字符串的开始
. :匹配除换行符\n之外的任何单字符
*:其前面那个单元出现0次或者以上(任意次数)
+ :其前面的那个单元出现1次或以上
? : 其前面的那个单元出现0次或1次
\: 这个字符用来转义
|:指明两项之间的一个选择
(): 标记一个子表达式的开始和结束位置
php命令
preg_match
preg_match_all
file_get_contents
php get
3 组合字符
\d 0-9 [0-9] [3-9]
\D 非数字[^0-9] [^abc]不是括号内的任意字符
\w 与任何单词字符匹配,包括下划线。等价于”[A-Za-z0-9]”。
\W 与任何非单词字符匹配。等价于”[^A-Za-z0-9]”。
\s 空格字符
\S 非空格字符
\b 单词边界
与单词的边界匹配,即单词与空格之间的位置。例如,”er\b”与”never”中的”er”匹配,但是不匹配”verb”中的”er”。
\B 非单词边界
与非单词边界匹配。”ea*r\B”与”neverearly”中的”ear”匹配。
4 限定字符
{m} 其前一个单元 严格出现 m次
{m,} 其前一个单元 至少出现m次, 至多不限制
{m,n} 其前一个单元, 至少m次, 至多n次
[^abc] 不是括号内的任意字符
正则工具:
http://tools.jb51.net/regex/create_reg
email
xxxxxx_xxx_xxx@asa-d.com.cn
\w[-\w.+]*@(A-Za-z0-9+.)+[A-Za-z]{2,14}
手机
1344542121
013412
0?
(13|14|15|18)
[0-9]{9}
身份证
\d{17}[\d|x]|\d{15}
18
\d{17}[\d|x]
15
子表达式
(.*?)
采集中用的最多的是 子表达式的用法