正则表达式——入门笔记
创建:
- var reg = /pattern/;
- var reg = new RegExp(“pattern”);
常用元字符 &反义字符 &限定符
- . 匹配除换行符以外的任意字符
- \w 匹配字母或数字或下划线
- \s 匹配任意的空白符
- \d 匹配数字
- \b 匹配单词的开始或结束
- ^ 匹配字符串的开始
- $ 匹配字符串的结束
- \n 匹配一个换行符
- \W 匹配任意不是字母或数字或下划线,汉字的字符
- \S 匹配任意不是空白符的字符
- \D 匹配任意非数字的字符
- [^aeiou] 除了aeiou这几个字母以外的任意字符
- {n} 重复n次
- {n,} 重复>=n次
- {n,m} 重复n到m次
- ✳ 有没有都可以
- + 重复>=1次
- ? 重复<=1次
- ✳? 重复任意次,尽可能少重复
- +? 重复>=1次,尽可能少重复
- ?? 重复<=1次,尽可能少重复
- {n,}? 重复>=n次,尽可能少重复,尽可能少重复
优先级顺序
转义符>圆括号和方括号>限定符>元字符>"或"操作
正则表达式 RegExp对象的方法
reg.test(str)------ 返回一个 Boolean 值,它指出在被查找的字符串中是否存在模式,如果存在则返回 true,否则就返回 false;
reg.exec(str) ------ 在字符串str中运行查找匹配reg正则表达式的字符串,并返回包含该查找结果的一个数组;
str.match(reg) ------ 使用正则表达式reg模式对字符串str执行查找,并将包含查找的结果作为数组返回;
exec()与match()的区别
这两个方法都能返回数组,但是在正则表达式reg模式的结尾加上"g"时,两者返回的结果就不一样了。exec()返回的数组永远都是它找到的第一个匹配的字符串(包不包含g都一样);而match()在有“g”的情况下返回会是被查找的str中所有匹配的字符串,当match()在没有“g”的情况下它返回的结果与exec()一样,仅返回第一个匹配的字符串。这可以用console.log();来验证。
零宽断言(一些小基础)
作用 ------ 给指定位置添加一个限定条件,用来规定此位置之前或者之后的字符必须满足限定条件才能使正则中的字表达式匹配成功,但匹配到的内容不会保存到匹配结果中去。
例:var reg=/ab(?=[A-Z])/;
其中 "(?=[A-Z])"并不匹配任何字符,只是用来规定当前位置的后面必须是一个大写字母。
认识零宽断言的符号
-
(?=exp) ------- 零宽度正预测先行断言,它断言自身出现的位置的后面能匹配表达式exp。
-
(?<=exp) ----- 零宽度正回顾后发断言,它断言自身出现的位置的前面能匹配表达式exp
-
(?!exp) -------- 零宽度负预测先行断言,断言此位置的后面不能匹配表达式exp。
-
(?<!exp) ------ 零宽度负回顾后发断言来断言此位置的前面不能匹配表达式exp
例:(?<=\s)\d+(?=\s) 表示匹配以空白符间隔的数字(不包括这些空白符)。
以上有关零宽断言的小基础都是我最近在学习时从别的大神的博客上学到的,要知道更具体的链接如下:
请点这里