正则表达式
创建正则表达式:
字面量创建: var reg = /a/g;
构造函数创建: var reg = new RegExp("a","g");
修饰符:
i : 不区分大小写 g: 全局 从头查找 m: 多行匹配
正则方法:
test(): 判断是否满足正则,不满足返回false
exec(): 查找字符串是否满足正则,返回 一个数组,这个数组只有一个元素,包括几个属性:分别是群组,索引,字符串自身
字符串中的方法:
replace() : 第一个参数为正则,第二个可以是字符串,也可是函数。将正则匹配的内容替换后面一个参数的内容
mach(): 参数为正则,返回匹配正则的数组,没有为null,如果有群组,但是不加全局,则会会返回找到的元素外,还会返回群组的元素
search(): 返回第一个匹配项的索引,没有返回-1
splict(): 第一个参数可以是字符串,也可以是正则 第二个参数可选,匹配个数
元字符:
. : 可以匹配任意一个字符
^ : 在 [ ] 中第一位使用^,表示^除了后面所有的字符都满足,不是第一位表示字符^
\w : [a-zA-Z0-9_]
\W : [^a-zA-Z0-9_]
\s : 空白字符(空格)
\S : 非空白字符
\n : 换行
\r : 回车
重复:
{n,m} :贪婪匹配,先匹配最大的
{0} :表示空字符
? : {0,1}
+ : {1,}
* : {0,}
/ a {2,5} ? / 在匹配后面加? 表示非贪婪匹配 例如 .+? 或者 .*?
起始、结束:
^$
群组:
var str="18617891076".match(/(\d{3})(\d{4})(\d{4})/).slice(1).reduce(function(value,item,index){ return index===1 ? value+"****" : value+item; })
可以简写为:
var str="18617891076".replace(/(\d{3})(\d{4})(\d{4})/,"$1****$3"); console.log(str);
断言:
?<= 前置等于 ?<! 前置不等于 ?= 后置等于 ?! 后置不等于