按顺序查找特殊标记,并对其间的文本执行某些操作

我想做一些像stackexchange中的这个短代码一样的东西。

所以基本上我想用不同的标记和.wrap()将文本.wrap()特定类的跨度…同时删除曾经存在的标记。

我发现这个使用jQuery在2个引号之间查找文本,但它提供的帮助不大,因为我只能让它按原样工作。

这进一步解释了: http : //jsfiddle.net/ALfsT/3/

我不知道该去哪里。

感谢@Guffa的帮助

http://jsfiddle.net/mplungjan/AkCED/

 var res = { boldIt:/\*\*(.*?)\*\*/g, underlineIt:/\_\_(.*?)\_\_/g } var txt = $( "#texts" ).html(); $.each(res, function(type, re) { txt = txt.replace( re, '$1' ); }); $( "#texts" ).html(txt); 

更新:

现在我们需要编写像这样的东西http://jsfiddle.net/mplungjan/bhTAM/

您更改为class = texts我将其更改回id =文本并且效果更好

 var res = { boldIt:{re:/\*\*(.*?)\*\*/g,tag:"span"}, underlineIt:{re:/\_\_(.*?)\_\_/g,tag:"span"}, italicIt:{re:/\/\/(.*?)\/\//g,tag:"span"}, titleIt:{re:/\=\=(.*?)\=\=/g,tag:"h1"}, linkIt:{re:/\#\#(.*?)\:(.*?)\#\#/g, tag:"a"}, imageIt:{re:/\"\"(.*?)\:(.*?)\"\"/g, tag:"img"} } var s = $("#texts").html(); $.each(res, function(type, obj) { if(s) s = s.replace(obj.re,'<'+obj.tag+' class="'+type+'" >$1'); }); $("#texts").html(s); 

你需要转义*字符:/ /\*\*(.*?)\*\*/ * /\*\*(.*?)\*\*/

我还建议您使用回调函数来包装文本: https : //developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/replace