javascript获取正则中的子匹配
昨天帮朋友处理一段文本正好用到了这个,记录一下。
1 2 3 4 5 6 7 8 9 10 | var str = '<a href="http://google.com" target="_blank">google</a>123<a title="百度" href="http://baidu.com">baidu</a>abce<a href="http://msn.com" class="msn">msn</a>kkk';// *? 非贪婪匹配var reg = /<a.*?href="([^"]*)"[^>]*>([^<]*)</a>/i;var arr = [];while(reg.exec(str)){ arr.push({'link':RegExp.$1 , 'text':RegExp.$2}); str = RegExp.rightContext;//将str截断 reg.lastIndex = 0;//重置下次匹配开始的位置}console.info(arr); |
另外两种正则表达式语法有一些不同,比如说转义。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #正则表达式语法 1re = /pattern/[flags]#正则表达式语法 2re = new RegExp("pattern",["flags"])#比如说要匹配"潘魏增(panweizeng)",同时获取其中的子匹配panweizeng,对应的写法如下var reg = /[^(]+(([^)]+))/g;#这里需要对括号使用两个转义符号var reg = new RegExp("[^\(]+\(([^\)]+)\)", "g");var submatch;if(reg.exec(str)){ submatch = RegExp.$1; reg.lastIndex = 0;}console.info(submatch); |
浙公网安备 33010602011771号