按顺序查找特殊标记,并对其间的文本执行某些操作
我想做一些像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'+obj.tag+'>'); }); $("#texts").html(s);
你需要转义*
字符:/ /\*\*(.*?)\*\*/
*
/\*\*(.*?)\*\*/
我还建议您使用回调函数来包装文本: https : //developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/replace