<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,最后把隐藏的再显示出来
我假定,你要把匹配的P全部都替换成Q,代码如下:<script> var s = '(12P33)P(P23&P)'; var r1 = /(\(.*?\))*P(\(.*?\))*/g s = s.replace(r1, "Q") alert( s ) </script>
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 )
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,最后把隐藏的再显示出来
var s = '(12P33)P(P23&P)';
var r1 = /(\(.*?\))*P(\(.*?\))*/g
s = s.replace(r1, "Q")
alert( s )
</script>
不過當: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 )