javascript间接实现前端非获取匹配,保留带某前缀的子串不执行替换
<!DOCTYPE html> <html> <head> <script type="text/javascript"> var s = 'AQ;BM; CN;eDP; EX; FX'; //需求:保留 eDP中的;,其余;执行替换 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>