读书人

正则表达式不婚配括号里面的字符

发布时间: 2013-11-05 14:40:42 作者: rapoo

正则表达式,不匹配括号里面的字符
一个字符串如下: (12P33)P(P23&P).
期望效果只能匹配 不在括号里面的P ,在括号里面的所有P都认为不符合条件,求思路 谢谢
在线等
正则表达式
[解决办法]

<script>
var s = '(12P33)P(P23&P)';
var r1 = /\(.*?\)/g, r2 = /#\$(\d+)\$#/g, i = 0, a = [];
s = s.replace(r1, function($){
a.push($);
return '#$'+ (i++) +'$#';
})
s = s.replace(/p/ig, '你要替换的');
s = s.replace(r2, function($, $1){
return a[$1];
});
alert( s )
</script>



先把括号内的“隐藏”了,再来替换括号外的p,最后把隐藏的再显示出来
[解决办法]
引用:
<script>
var s = '(12P33)P(P23&P)';
var r1 = /\(.*?\)/g, r2 = /#\$(\d+)\$#/g, i = 0, a = [];
s = s.replace(r1, function($){
a.push($);
return '#$'+ (i++) +'$#';
})
s = s.replace(/p/ig, '你要替换的');
s = s.replace(r2, function($, $1){
return a[$1];
});
alert( s )
</script>



先把括号内的“隐藏”了,再来替换括号外的p,最后把隐藏的再显示出来

1已出了很好的解方案.
不:var s = '(12P33)#$0$#P(P23&P)'出;
情很少,但也可能出;
建:

var s = '(12P33)#$0$#P(P23&P)';
var r1 = /\(.*?\)/g, r2 = /\((\d+)\)/g, i = 0, a = [];
s = s.replace(r1, function($){
a.push($);
return '('+ (i++) +')';
});
s = s.replace(/p/ig, '你要替换的');
s = s.replace(r2, function($, $1){
return a[$1];
});
alert( s )

读书人网 >JavaScript

热点推荐