javascript间接实现前端非获取匹配,保留带某前缀的子串不执行替换

<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
 var s = 'AQ;BM; CN;&#101;DP;  EX; FX';
//需求:保留 &#101;DP中的;,其余;执行替换

var s2 = s.replace(/(&#\d+)?;/ig,function(a,b){return b?b+';':'<br/>'});
alert(s+'\n'+s2);
//保留具有某个前缀的查询字符串,没该前缀的查询字符串执行替换
//原来replace参数2还可以接受函数作为参数

//()捕捉用的小括号 捕捉结果作为参数b传入函数

//其实自己也遇到过这样的问题,刚好可以用这种方法来解决
var myhtml="100006 希望与你对话accept('100002.10006');接受 还是拒绝 refuse('100002.100006','100006')"
//需求:只保留100002.100006中的100006,其他地方的100006都替换成 小明

//我想的办法 执行2次replace
//myhtml.replace(/100006(?!')/g,"小明").replace(/'100006'/g,"小明");

var myhtml2=myhtml.replace(/(\.)?100006/g,function(a,b){return b?b+'100006':"小明"});
//用函数实现 带前缀的保留 不带前缀的执行替换
alert(myhtml+"\n"+myhtml2);

 </script> 
</head>
<body></body>
</html>

 

posted @ 2013-02-28 14:46  stephenykk  阅读(217)  评论(0编辑  收藏  举报