正则里面的 分组、字符匹配、前瞻、后顾 有时间了解了解
w{3} 是什么意思
w 大小写字母、数字、下划线。
{3} 代表只有3个匹配字符。
w{3} 代表只有3个匹配的字母、数字、下划线。
javaScript中用来匹配正则的函数是什么?
match() return 一个数组。
修饰符 g 是什么意思?
g代表匹配全局,只有在javaScript中有 php、java没有。
w+ 和 w有啥区别?
前者匹配多次或者多个 大小写字母、数字、下划线;后者只匹配一个或者一次。
W 大写W代表非字母、数字、下划线。
经常会发现javaScript中有个test()函数,有什么作用?
用于检测一个字符串是否匹配某个模式,如果匹配返回true,不匹配返回false。
在每个正则表达式的最后加上一个修饰符 i 代表忽略大小写
例如:/aaa/i 取出所有的aaa 忽略大小写。 javaScript、php 都可以使用
php中 也可以写成 /(?i)aaa/
[A-Z]代表匹配从A到Z的一个大写字母。
[a-z]代表匹配从a到z的一个小写字母。
+ 是匹配多次的意思。
javaScript中的 中文:
第一个 u4e00 最后一个 u9fa5 [\u4e00-\u9fa5]
php中的 中文:
第一个 x{4e00} 最后一个 x{9fa5}
所以在php中匹配中文要这么写 [x{4e00}-x{9fa5}] 并必须加上"u"修饰符 字符串如果是utf-8 那么必须要加上u修饰符 /[x{4e00}-x{9fa5}]/u
^ 代表匹配一行的开头。
$ 代表匹配一行的结尾。
. 代表除了
之外的 任意字符 后面加个 + 你懂得
() 正则表达式中的小括号的作用是对字符进行分组,并保存匹配的文本,与位于小括号之间的模式匹配的内容都会被捕获。我们可以认为小括号里面的内容可以被取出来。
() 小括号还有另外的一个意思 就是在连续字符可以作为多选进行匹配
[] 是范围
在()里面加 ?: 代表这个小括号里面的内容不进行提取
在()后面加? 代表可有可无
?: 代表 0个或者1个
+: 代表 1个或者多个
*: 代表 0个或多个
修饰符 is
1、i 代表不区分大小写
2、s 加上这个修饰符就代表所有了,默认是不包括换行符的,加上就代表包括换行符了
3、修饰符大写U 代表使用非贪婪模式
试着抓取页面 img的url
$pattern="/<img.*?src=['|"]?(?<img>[^'">]*)['|"]?.*?[/]?>/i";
试着过滤html中的注入
$pattern="/</?(script|i?frame|style).*?>/is";
年月日的正则
31天月份
0[13578]|1[02]
30天的月份
0[469]|11
对于31天来说
前10天|10-29天|30-31天
0[1-9]|[12][0-9]|3[01]
对于30天来说
0[0-9]|[12][0-9]|30
对于28天来说
0[1-9]|1[0-9]|2[0-8]
31天的月份+日期
0[13578]|1[02]-0[1-9]|[12][0-9]|3[01]
30天的月份+日期
0[469]|11-0[0-9]|[12][0-9]|30
28天的月份+日期
02-0[1-9]|1[0-9]|2[0-8]
把前面的合并起来 就解决了 月份跟日期 不考虑闰年 的正则
((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[0-9]|[12][0-9]|30))|(02-(0[1-9]|1[0-9]|2[0-8]))
处理闰年
闰年的定义:1、普通年能被4整除且不能被100整除的为闰年。如2004就是闰年,1900就不是闰年
2、世纪年能被400整除的是闰年。如2000就是闰年,1900就不是闰年
普通年 前面2位不用处理 处理后面2位
([0-9]{2})(0[48]|[2468][048]|[13579][26])
世纪年 后面2位为00 得处理前面2位
(0[48]|[2468][048]|[13579][26])00
合并起来 就是闰年的 2月29
((([0-9]{2})(0[48]|[2468][048]|[13579][26]))|((0[48]|[2468][048]|[13579][26])00))-02-29
0001年-9999年的正则
[0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3}
全部合并起来 YYYY-MM-DD的匹配正则
(([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})|
(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[0-9]|[12][0-9]|30))|(02-(0[1-9]|1[0-9]|2[0-8]))))|
(((([0-9]{2})(0[48]|[2468][048]|[13579][26]))|((0[48]|[2468][048]|[13579][26])00))-02-29)