按顺序找到特殊的标记,并对中间的文本做些什么

Find special markers in sequence and do something to the text in between

本文关键字:中间 做些什么 文本 顺序      更新时间:2023-09-26

我想做一些类似于stackexchange中的短代码的事情。

所以基本上,我想用不同的标记来包装文本,并相应地用特定的类将它们.wrap()封装在跨度中。。。同时还去除了曾经存在的标记。

我用jQuery找到了这个"在两个引号之间查找文本",但它几乎没有帮助,因为我只能让它按原样工作。

这进一步解释了: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, '<span class="'+type+'" >$1</span>' );
});
$( "#texts" ).html(txt);

更新:

现在我们需要编写这样的代码http://jsfiddle.net/mplungjan/bhTAM/

你改成了class=text,我又改回id=text,效果更好

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

相关文章: