正则表达式
Posted wangjingzhi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式相关的知识,希望对你有一定的参考价值。
创建正则表达式:
字面量创建: 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,m} :贪婪匹配,先匹配最大的
{0} :表示空字符
? : {0,1}
+ : {1,}
* : {0,}
/ a {2,5} ? / 在匹配后面加? 表示非贪婪匹配 例如 .+? 或者 .*?
起始、结束:
^$
群组:
1 var str="18617891076".match(/(d{3})(d{4})(d{4})/).slice(1).reduce(function(value,item,index){ 2 3 return index===1 ? value+"****" : value+item; 4 5 })
可以简写为:
var str="18617891076".replace(/(d{3})(d{4})(d{4})/,"$1****$3"); console.log(str);
断言:
?<= 前置等于 ?<! 前置不等于 ?= 后置等于 ?! 后置不等于
以上是关于正则表达式的主要内容,如果未能解决你的问题,请参考以下文章
正则表达式匹配特定的 URL 片段而不是所有其他 URL 可能性