jquery textarea自定义标签更换

时间:2011-02-28 17:06:22

标签: jquery regex textarea replace

我基本上是在尝试创建自己的标签 - 并用正确的HTML标签替换它们。因此{B} {/B}会变成<b> </b>

我到目前为止只有这个,在这里:http://www.nacremedia.com/text2.htm

使用[B]按钮加粗当前选择...它会因某种原因创建两个粗体标签和一个关闭。

我太近了!但我只需要一点方向来获得最终的错误 - 有人可以帮忙吗?

此外,如果有更好的方式完全这样做,那么我非常欢迎新的想法。

2 个答案:

答案 0 :(得分:0)

您可以在字符串上使用一系列.replace()函数。例如:

var your_string = "{B}Testing{/B}";
your_string.replace("{B}", "<b>");
your_string.replace("{/B}", "</b>");

答案 1 :(得分:0)

如果你试图加粗文本“Test”那么,在replaceArray的for循环的最后,replaceString的值是&lt; b&gt; dsaf&lt;&lt; / i&gt; b&gt;

这是因为在循环的最后一步中,&lt; b&gt; Test&lt; / b&gt;中的正斜杠了。匹配正则表达式/ [/ I] / g,因为正则表达式中的括号指定了字符类。正则表达式不是在字符串中查找“[/ I]”,而是实际上正在寻找前锋或字符I.

最后,当插入到输出div时,浏览器会自动关闭第一个粗体标记并省略关闭斜体标记,最后留下一个额外的粗体标记。

转义“[/ I]”中的括号应该可以解决您的问题,或者更好的是,将其更改为“{/ I}”以避免出现问题,并且与实现粗体的方式保持一致。

有关正则表达式字符类的详细信息,请参阅:http://www.regular-expressions.info/charclass.html

最后一点,eloquent javascript(http://eloquentjavascript.net/chapter6.html)的功能章节解释了解析和生成标记的更好方法之一。