降价以双星号转换为JavaScript中粗体文字(Markdown to convert doubl

2019-09-16 13:37发布

我试图使自己的降价,能像文本区域已经#1完成。 目标是让人们键入**blah blah**在一个textarea和具有在一个div输出是<span style="font-weight:bold;">blah blah</span>

我在使用JavaScript的麻烦查找和替换与HTML的**星号。

这里是它已经得到了甲方的jsfiddle开始: http://jsfiddle.net/trpeters1/2LAL4/14/

这里是上了JS只是为了告诉你我在哪里:

$(document.body).on('click', 'button', function() {

var val=$('textarea').val();

var bolded=val.replace(/\**[A-z][0-9]**/gi, '<span style="font-weight:bold;">"'+val+'" </span>');

$('div').html(bolded);
});

与HTML ...

<textarea></textarea>
<div></div><button type="button">Markdownify</button>

任何想法将不胜感激!

谢谢,蒂姆

Answer 1:

你的正则表达式是坏了,一两件事。 你可能想要的东西更像是:

/\*\*[A-z0-9]+\*\*/gi

*是正则表达式中一个特殊字符。 如果你要匹配的文字* ,那么你需要进行转义\

例如: http://jsfiddle.net/2LAL4/22/

然而,即使这种变化还是有一个公平的方式,你得到你真正想要的是之前去。 举例来说,如果文本区域包含粗体和非粗体文字的搭配你的榜样将无法工作。



Answer 2:

当一个char立即之前或之后的星号其他答案失败。

这就像降价应该:

function boldText(text){
    var bold = /\*\*(\S(.*?\S)?)\*\*/gm;
    var html = text.replace(bold, '<strong>$1</strong>');            
    return html;
}

alert(boldText('te**st**ing'));

见的jsfiddle



Answer 3:

为什么要从头开始创建? 有了这么多的开源编辑器在那里,你应该选择一个你喜欢的代码库和从那里走。 http://oscargodson.github.com/EpicEditor/ http://markitup.jaysalvat.com/home/



Answer 4:

所提供的答案都不适用于所有情况。 例如,其他的解决方案不会工作,如果我们有旁边的双星,即空间:

This will ** not ** be bold

所以我写了这一点:

function markuptext(text,identifier,htmltag)
{
    var array = text.split(identifier);
    var previous = "";
    var previous_i;
    for (i = 0; i < array.length; i++) {
        if (i % 2)
        {
            //odd number
        }
        else if (i!=0)
        {
            previous_i = eval(i-1);
            array[previous_i] = "<"+htmltag+">"+previous+"</"+htmltag+">";
        }
        previous = array[i];
    }
    var newtext = "";
    for (i = 0; i < array.length; i++) {
        newtext += array[i];
    }
    return newtext;
}

只是这样称呼它:

thetext = markuptext(thetext,"**","strong");

它会在所有情况下工作。 当然,你也可以用其它标识符/ HTML标签,只要你喜欢使用它(计算器预览应该有这个太)。



Answer 5:

如果您在使用jQuery,替换此:

$(document.body).on('click', 'button', function() {

有了这个:

$("button").click(function () {


Answer 6:

下面的正则表达式会发现你的星号包裹的文字:

/\x2a\x2a[A-z0-9]+\x2a\x2a/

我更新了小提琴为例: http://jsfiddle.net/2LAL4/30/



文章来源: Markdown to convert double asterisks to bold text in javascript