正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),能够用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。正则表达式
一个字符串中要匹配 is ,这时候,咱们须要页面中只要是有is的单词也会被匹配,\bis\b意思是,is先后含有单词边界。express
路径中,如http://.*.jpg 匹配全部以http开头,文件名和路径随意,.jpg结尾的路径名称。 分组的概念:(http://.*.jpg) 获取匹配到的值 $1数组
再例如时间日期:\d{4}/\d{2}/\d{2},其中{...}表示量词,这时候,有时/是-,那么要进行或逻辑[/-]表示或 改善之后的正则:\d{4}[/-]\d{2}\d{2}函数
引入:咱们有时想匹配一个几个字母,ab\t -> ab+tab,但有时,咱们想要泛指匹配某一类字符,这时候就须要类的概念,可使用元字符[]来构建一个简单的类,a1b1c1d1.replace(/[abc]/g,'YES');好比:YES1YES2YES3d4(只匹配a或b或c)测试
字符取反,a1b1c1d1.replace(/[^abc]/g,'YES');好比:aYESbYES...(除了abc,其余所有匹配)prototype
量词放置在{}中3d
贪婪模式与非贪婪模式对象
分组放置于()中,这个很好理解,就像是数学中的运算,将括号中的元素当成一个总体.hello{2} --> helloo ; (hello){2} -->hellohello;(a|b|c|d)索引
符合和不符合特定断言的称为(确定/正向)匹配和(否认/负向)匹配ip
前瞻是向后看,这一点不少人会比较犯糊涂,例如: \d{2}(?=\w{2}) 匹配形如 12aa中的aa.
对象属性:global(g) ignore case(i) multiline(m)默认值全是false。
对象的方法:
test(): /\w/ 若是加上g参数,不停console.log(reg.test('ab')),第三次会错 这就是lastIndex在做怪,1 , 2.其实咱们测试时,没有必要g,弄明白每一个元素坐标位置
exec(): /\d(\w)/ 匹配上会返回一个结果数组,第一个参数返回匹配结果,后面参数依次是子表达式所匹配的内容,就是咱们以前使用的$1,$2... res.index 返回每结果的索引
String.prototype.search(reg): 检索知足正则的第一个子表达式,search忽略 g 标志,始终从头开始返回最前一个 String.prototype.match(reg): 非全局调用,返回值和RegExp的exec所返回的一致 忽略 g lastIndex返回0,有两个属性: index和input属性
String.prototype.split(reg)
String.prototype.replace(str/reg,repStr)
String.prototype.replace(str/reg,function(a,b,c,d){})