恳求老师帮忙解决一个JS正则匹配英文标点以及特殊排除并替换问题

草原上的奶牛 2019-03-27 11:58:58
正则匹配标签内的英文逗号、问号和冒号替换为中文的逗号、问号和冒号,但排除UBB标签内,如:【url】【/url】,也就是UBB标签内的英文逗号、问号和冒号不作替换。


如以下内容:


<div>我们来自:中国</div>
<div style="font :12px">他们 :来自哪里?</div>
<p style="font :12px">
正则表达式让初学者觉得学习很痛苦?学习,练习,写出自己的正则表达式。【url】xcvxcv122?sss<a href="cc?,cc">cc?,cc</a>【/url】
</p>   
<p>                   
现在就开始练习,你一定会爱上正则表达式的!
</p>

替换为:

<div>我们来自:中国</div>
<div style="font :12px">他们 :来自哪里?</div>
<p style="font :12px">
正则表达式让初学者觉得学习很痛苦?学习,练习,写出自己的正则表达式。【url】xcvxcv122?sss<a href="cc?,cc">cc?,cc</a>【/url】
</p>   
<p>                   
现在就开始练习,你一定会爱上正则表达式的!
</p>
...全文
395 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
草原上的奶牛 2019-03-27
  • 打赏
  • 举报
回复
是这样[],因为编辑器问题我写成【】了
麦草CMS 2019-03-27
  • 打赏
  • 举报
回复
是这样【】?还是这样[]?
草原上的奶牛 2019-03-27
  • 打赏
  • 举报
回复
/*替换英文逗号、冒号、感叹号*/
$2 = $2.replace(/(<\/?\w+.*?>)?([^<>]*)/g,(s,a,b)=>(a||"")+(b||"")
.replace(/http:/g,"http:")
.replace(/:/g,":")
.replace(/,/g,",")
.replace(/!/g,"!")
.replace(/\?/g,"?")
);

/*UBB语法标签不进行符号替换 如 [UBB][/UBB]*/
$2 = $2.replace(/\[[^\[\]\/]*\][^\[\]]*/g, function(w){
return w
.replace(/:/g, ":")
.replace(/,/g, ",")
.replace(/!/g, "!")
.replace(/?/g, "?");
});



代码有些细节问题,我作了些优化,我想到的也是两次替换。
麦草CMS 2019-03-27
  • 打赏
  • 举报
回复
var html = `<div>我们来自:中国</div>
<div style="font :12px">他们 :来自哪里?</div>
<p style="font :12px">
正则表达式让初学者觉得学习很痛苦?学习,练习,写出自己的正则表达式。xcvxcv122?sss<a href="cc?,cc">cc?,cc</a>
</p>
<p>
现在就开始练习,你一定会爱上正则表达式的!
</p>`;
alert((html.replace(/(<[^\/<>]*>)([^<>]*)/g, function(w, $1, $2){
return $1 + $2.replace(/:/g, ":").replace(/,/g, ",");
})).replace(/\[[^\[\]\/]*\][^\[\]]*/g, function(w){
return w.replace(/:/g, ":").replace(/,/g, ",");
}));
草原上的奶牛 2019-03-27
  • 打赏
  • 举报
回复
引用 1 楼 麦草CMS 的回复:
是这样【】?还是这样[]?


是[]

87,903

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧