正则学习
正则
正:正确 则:规则 正则就是正确的规则 处理字符串的一种规则
处理1 正则匹配 验证当前字符串是否符合该规则的子串
处理2 正则捕获 获取到符合规则的字符
正则定义
1正则字面量
var reg = /\d/g;
2new创建
var reg2 = new RegExp("\d","g");
正则 元字符 修饰符
修饰符
//这里的符号是修饰符
修饰符 i
ignoreCase 忽略大小写
修饰符 g
global 全局匹配
修饰符 m
multiline 多行匹配
元字符
/里面的符号就叫做元字符/
特殊的元字符
\d 0~9任意一个数字
\D 非0~9之间的任意字符
\w 字母数字下划线
\W 非字母数字下划线
\s 匹配任意一个空白字符(包括制表符)
\b 匹配边界符 "hello-world" hello的左边界符是"右边界符是- world左边界符是- 右边界符是"
\n 匹配一个换行符号
\ 叫做转义字符
1.把普通的字符转换为特殊的字符
2.把特殊的转化为普通的 例如把. 转化为小数点.
. 表示出了\n之外的任意字符
^ 以某个字符开始
$以某个字符结尾
a|b a或者b任意一个
[158]不是一百五十八 是1或者5或者8 任意选一个
[abc] a或者b或者c任意一个
[^abc]出了a或者b或者c之外的任意一个
[a-z]表示a到z中任意一个字母
[0-9]0到9之间任意一个数字 等价于\d
[^a-z]不是a到z之间任意的字母
()分组
(?:)当前分组只匹配不捕获
(?=)正向预查
(?!)反向预查
量词元字符
(*) 出现零次到多次 等价于{0,}
? 出现零次到一次 等价于{0,1}
+出现一次到多次 等价于{1,}
{m}出现m次
{m,}出现至少m次
{m,n}出现m~n次
普通元字符
/123/123就是普通的
中括号细节
[.]中括号里面的字符绝大多数已经只是一个普通的字符了 失去了特殊字符的含义了
[\d]还是表示0-9的任意数字
中括号出现的两位数 不是数学的两位数 是两个符号 是两个字符
正则方法
reg.exec() 字符串中正则的匹配项
匹配到的是一个数组
0 是捕获的内容
index 是捕获的索引
input 是被检测的字符串
执行一次exec方法只能捕获到第一个匹配的 正则捕获懒惰性
正则捕获懒惰性的原因就是lastIndex属性不变
要想改变正则捕获懒惰性,只能在正则后面加修饰符g
reg.test()测试字符串是否匹配 匹配返回true 不匹配返回false