您的位置:首页 > 其它

正则表达式重点总结

2016-10-21 00:00 274 查看
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 使用与否好像并没有区别,可以试试
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  正则 捕获 分组 exec match