1.正则表达式的概念:
由字符序列形成的搜索模式 可以通过搜索模式的描述查询内容 用于所有的文本搜索和替换
2.正则表达式的创建:
字面量模式:var reg = /hello/g;
构造函数模式:var reg = new RegExp('hello', 'g')
hello式正则表达式的内容,g是正则表达式的皮匹配模式 g =》 global全局匹配 m =》 multiline 多行匹配 i =》 ignoreCase 匹配时忽略大小写
3.字符的分类
普通字符:字母,数字,下划线,汉字,一些没有特殊意义的符号
特殊字符:\ 把特殊字符转化成普通字符
4.正则表达式的实例方法
reg.exec(str) 用于判断str字符串中是否存在与reg相匹配的字符串段,返回一个数组,
包含匹配的内容 index(匹配内容的在字符串中的起始位置) input(与reg匹配的字符串) groups(与reg匹配的字符串所在的组)
当未能匹配到相应的字符串时返回null
reg.test(str) 用于判断str字符串中是否存在于reg相匹配的字符串段,如果有返回true,没有则返回false
注意:当使用exec方法来进行循环匹配字符串时,必须使用全局匹配。因为在正则表达式中存在一个lastIndex属性,而使用全局模式会维护这个属性
即每次使用时都会随着字符串的匹配进行更新,而不是全局模式时,该属性并不会进行维护,即每次调用时,该属性都是0,不会随着字符串的匹配而更新
reg.toString()/toLocalString() 转化成为字面模式下的字符串形式
reg.valueOf() 返回正则表达式本身
5.正则表达式的实例属性:
lastIndex:匹配时最后的字符,当每次重新调用实例方法时起点更新为上一次的lastIndex,当test返回false时归零。当没有设置全局匹配时,默认为0
ignoreCase,global,multiline:正则表达式的三种匹配模式
source:返回字面量形式的正则表达式
## 6.正则表达式语法:
直接量字符:正则表达式支持的匹配字符
数字和字母字符:匹配自身
\o :匹配Null字符
\t : 匹配制表符
\n : 匹配换行符
\v : 匹配垂直制表符
\f : 匹配换页符
\r : 匹配回车符
字符集合:字符组,表示所需要的匹配的字符集合,匹配其中一个就行 用[]包裹 例:[0-9] 起始字符与结尾字符用 “-” 相连
例:
[abc] 字符串中匹配a,b,c中的任意一个
[0-9] 字符串中匹配0到9中的任意一个
[^xyz] 字符串中不存在匹配x,y,z中的任意一个
边界符:对边界进行字符串匹配,即开头和结尾
^ : 匹配文本开始 /^abc/匹配以abc开头的字符串
$ : 匹配文本结束 /abc$/匹配以abc结尾的字符串
注意:当边界符 ^ 和 $ 一起使用时,表示精确匹配,即/^abc$/匹配的是a,b,c这三个字母,而不是以abc开头和结束的字符串
这种方法只会匹配一个字符
\b : 零宽单词边界 表示一个单词(而非字符)边界,也就是单词和空格之间的位置,或者字符(\w)与字符串开头或者结尾之间的位置。
\B : 非零宽单词边界 与\b相反
字符类:用于简便表示一个特定字符集合
. : 匹配除了换行符\n 和回车符\r 之外的任意一个字符
\d : 匹配一个数字字符 [0-9]
\D : 匹配一个非数字字符 [^0-9]
\w : 匹配包括下划线在内的任意单个字符和数字 [a-zA-Z0-9_]
\W : 匹配除了包括下划线在内的任意单个字符和数字 [^a-zA-Z0-9_]
\s : 匹配任何的Unicode空白字符,即空格,制表符,换页符等 [\f\r\t\n]
\S : 匹配除了Unicode空白字符的其他字符 [^\f\r\t\n]
数量词:用于表示该字符出现的次数
* : >=0次
+ : >=1次
? : 0/1次
{n} : n次
{n,} : >=n次
{n,m} : >=n <=m次
重复模式:
贪婪模式:默认模式,当存在一个匹配次数区间时,优先选择最大的次数进行匹配
/\d{3,6}/g 优先匹配最多的次数 6
非贪婪模式:存在匹配次数区间时,选择最少的匹配次数进行匹配
/\d{3,6}?/g 优先匹配次数少的次数 3
7.选择,引用,分组
选择: /html|css|js/ 表示匹配html,css,js中的任意一个
分组: /abcabcabc/ =》 /(abc){3}/ 表示对该正则表达式进行了分组为三段abc
引用: /(\d{4})-(\d{2}-(\d{2}))/ RegExp.$1 表示引用了(\d{4})
注意:在引用之前要使用test/exec才能进行捕获引用
嵌套分组的捕获:从左至右依次查看左小括号的包裹对象,其包裹对象就是捕获的顺序
引用的使用注意:当使用引用时,如果编号越界了,则该引用会被解析成为普通的表达式
8.String对正则表达式的支持方法
search:str.search(reg) 查找字符串中是否存在匹配正则的字符串,有则返回第一次出现的位置,没有返回null
match: str.match(reg) 匹配字符串中符合正则表达式的字符串,返回一个数组,包含字符串的内容和位置
split: str.split(reg) 将字符串以某种形式进行分割
replace:str.replace(reg, 'other') 查找满足条件的字符串,并替换为任意字符串