正则表达式重点总结

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://my.oschina.net/luweiweiwei/blog/761840

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值