JS正则表达式求助!有会的大佬吗?

js代码中有如下转义正则:

// 转义@
content.replace(/@(\S+)(\s+?|$)/g,
    '<a href="javascript:;" style="color: '
    + 'deepskyblue" class="fly-aite">@$1</a>$2')

以上代码作用:

把内容中紧跟着@字符的文字转义为超链接可点击

目前存在的问题:

把content内容中的pre代码标签中的代码也给转义了,如图
https://img1.mukewang.com/5c9cc0990001e60b05940117.jpg

期望的结果:

不要转义所有[pre]code段...[/pre]之间的@xxx

以上正则该如何修改?


慕神8447489
浏览 358回答 1
1回答

杨魅力

没有什么是不可以用正则表达式替换的,如果替换不了,那就用两个:第一步,先把<pre>里面的@转换成%或者其它任意你觉得不会与其他文本相同的东西,哪怕是好几个中文字符都行:content.replace(/(<pre>.*)@(.*<\/pre>)/gms, '$1%$2');第二步,按照你上面的方法,把@后面的内容进行转换;第三步,再把<pre>里面的%转回@:content.replace(/(<pre>.*)%(.*<\/pre>)/gms, '$1@$2');
打开App,查看更多内容
随时随地看视频慕课网APP