正则表达式重点总结

前端之家收集整理的这篇文章主要介绍了正则表达式重点总结前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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 使用与否好像并没有区别,可以试试

原文链接:https://www.f2er.com/regex/358868.html

猜你在找的正则表达式相关文章