正则表达式 替换字符串 [javascript]
发布时间:2020-12-14 01:58:23 所属栏目:百科 来源:网络整理
导读:需求:将”冰雨三刘德"华-----12雨3\\222222“中的""替换成||,而且是只替换,不能替换多于两个的字符,比如,样例中,应该只替换冰雨中间的和--12中间的。 正则表达式是我的老朋友了,喜欢上它大概是07年的时候处理一个发布系统标
需求:将”冰雨三刘德"华-----12雨3\\222222“中的""替换成||,而且是只替换,不能替换多于两个的字符,比如,样例中,应该只替换冰雨中间的和--12中间的。 正则表达式是我的老朋友了,喜欢上它大概是07年的时候处理一个发布系统标签读取的项目,好长时间没用了,有点生疏了。遇到字符串处理的问题,我第一想到的肯定是正则表达式,eclipse里也常备一款Regular的插件,简单思考后就有了: 直接往javascript里搬吧,发现javascript不支持(?<!)的写法,也就是不支持”反向否定预查“,只能用其他方式了,于是有了: function change(newStr){ //var reg = /(?<!)\(?!)/g; var reg = /[^]({2})(?!)/g; //var str_before = '冰雨三刘德"华-----12雨3\\222222'; var str_before = '冰\雨三刘德\"华-----\12雨3\\\\\222222'; var str_after = str_before.replace(reg,newStr); alert(str_after); } 这样写,不仅会将符合条件的捕获到,也会将前边的一个字符捕获到,脑子有点不灵光,想了半天,没想出好的方法,最后逆向思维了一下,把那个字符提取出来和要替换的字符合并不就成了吗?于是有了: function change(newStr){ //var reg = /(?<!)\(?!)/g; var reg = /[^]({2})(?!)/g; //var str_before = '冰雨三刘德"华-----12雨3\\222222'; var str_before = '冰\雨三刘德\"华-----\12雨3\\\\\222222'; var str_after = str_before.replace(reg,function(m){ m = m.substring(0,1); return m + newStr; }); alert(str_after); }基本满足需求。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |