正则表达式重点总结
1. 贪婪模式 (尽可能多的去匹配符合条件的字符串) var str = "aaabbbbcccccAAABBBBCCCCC"; var reg = /a.*b/ig; var newStr = str.replace(reg,'笨蛋'); console.log(newStr); // 结果:笨蛋CCCCC 匹配了aaabbbbcccccAAABBBBCCCCC **非贪婪模式(尽可能少的去匹配符合条件的字符串 '?' ) var str = "aaabbbbcccccAAABBBBCCCCC"; var reg = /a.*?b/ig; var newStr = str.replace(reg,'笨蛋'); console.log(newStr); // 结果:笨蛋bbbccccc笨蛋BBBCCCCC 匹配了aaabbbbcccccAAABBBBCCCCC 2. 捕获组 **捕获型: var str = "aaabbbbcccccAAABBBBCCCCC"; /[w]{3}(b)*(c)*/.exec(str) // 结果:["aaabbbbccccc","b","c"] 除了输出匹配结果,还输出了捕获到的b和c **非捕获型3种: var str = "aaabbbbcccccAAABBBBCCCCC"; /[w]{3}(?!b)/.exec(str) // 结果:["bbb"] 后面跟的不是b的三个字符 aaabbbbcccccAAABBBBCCCCC var str = "aaabbbbcccccAAABBBBCCCCC"; /[w]{3}(?=b)/.exec(str) // 结果:["aaa"] 后面跟b的三个字符 aaabbbbcccccAAABBBBCCCCC var str = "aaabbbbcccccAAABBBBCCCCC"; /[w]{3}(?:b)/.exec(str) // 结果:["aaab"] 三个字符后紧跟b的字符串aaabbbbcccccAAABBBBCCCCC **更好的理解捕获(分组) var reg = /((d)(d))/; if(reg.test('abc123ddd')){ console.log(RegExp.$0,RegExp.$1,RegExp.$2,RegExp.$3) } // 结果:undefined "12" "1" "2" '(' 从左到右算分组,下标从1开始 3. 方法: test、match、search、replace、split、exec、compile **test:测试str是否包含匹配,包含返回true,不包含返回false。 var str = "aaabbbbcccccAAABBBBCCCCC"; var reg = /ab/ig; var newStr = reg.test(str); console.log(newStr); // 结果:true **match:根据reg进行正则匹配,匹配到,返回匹配结果,否则返回null。 var str = "aaabbbbcccccAAABBBBCCCCC"; var reg = /ab/ig; var newStr = str.match(reg); console.log(newStr); // 结果:["ab","AB"] **search:根据reg进行正则匹配,如果匹配到一个结果,则返回它的索引数(0开始),否则返回-1。 ar str = "aaabbbbcccccAAABBBBCCCCC"; var reg = /bc/ig; var newStr = str. search(reg); console.log(newStr); // 结果:6 下标从0开始 **replace:根据reg进行正则匹配,把匹配结果替换为“ 笨蛋 ”。 var str = "aaabbbbcccccAAABBBBCCCCC"; var reg = /bc/ig; var newStr = str. replace(reg,'笨蛋'); console.log(newStr); // 结果:aaabbb笨蛋ccccAAABBB笨蛋CCCC **split:根据reg进行正则分割,返回分割后的字符串组成的数组。 var str = "aaabbbbcccccAAABBBBCCCCC"; var reg = /bc/ig; var newStr = str.split(reg); console.log(newStr); // 结果:["aaabbb","ccccAAABBB","CCCC"] aaabbbbcccccAAABBBBCCCCC **exec:对str进行正则处理,并返回匹配结果。array[0]为匹配到的字符串,array[1]为匹配在整个被搜索字符串中的位置。 var str = "aaabbbbcccccAAABBBBCCCCC"; var reg = /bc/ig; var newStr = reg.exec(str); console.log(newStr); // 结果:["bc",index: 6,input: "aaabbbbcccccAAABBBBCCCCC"] **compile:用于改变和重新编译正则表达式(基本等同于构造方法方式,已被废弃) var str = "aaabbbbcccccAAABBBBCCCCC"; var reg = /bc/ig; var newStr = str.replace(reg,'笨蛋'); console.log(newStr); reg=/ab/gi; reg.compile(reg); newStr = str.replace(reg,'笨蛋'); console.log(newStr); // 结果:aaabbb笨蛋ccccAAABBB笨蛋CCCC aa笨蛋bbbcccccAA笨蛋BBBCCCCC 使用与否好像并没有区别,可以试试 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |