用<li> </li>替换* <br/>

时间:2014-01-20 15:24:22

标签: javascript html regex

我有以下文字:

*<BR> Bullet1 *<BR>Bullet 2 *<BR>Bullet 3 *<BR>Bullet 4

我想用*<BR>替换每个<li>,但也会在文本末尾放置</li>(当它到达新的*<BR>时,或者可以&#39}。找到任何)

诀窍在于我还需要<ul>围绕所有这些来使其成为有效的HTML。

我考虑过使用正则表达式,但说实话,我无法理解它的概念。

3 个答案:

答案 0 :(得分:3)

将HTML与正则表达式匹配是个坏主意。阅读此主题以了解Using regular expressions to parse HTML: why not?的原因。如果您确定其中没有其他html标记,则可以使用简单的拆分

var str = "*<BR> Bullet1 *<BR>Bullet 2 *<BR>Bullet 3 *<BR>Bullet 4";
var parts = str.split("*<BR>");
parts.shift();
var html = "<li>" + parts.join("</li><li>") + "</li>";
console.log(html);

答案 1 :(得分:0)

快而脏:

var text = '*<BR> Bullet1 *<BR>Bullet 2 *<BR>Bullet 3 *<BR>Bullet 4';
var result = '<ul>' + text.replace(/\*<BR>/g, '</li><li>').substring(5) + '</li></ul>';
// result = "<ul><li> Bullet1 </li><li>Bullet 2 </li><li>Bullet 3 </li><li>Bullet 4</li></ul>"

有关javascript中正则表达式替换的更多信息: http://www.w3schools.com/jsref/jsref_replace.asp&amp; http://www.w3schools.com/jsref/jsref_obj_regexp.asp

答案 2 :(得分:0)

我不认为正则表达式是最好的方法,但这里是如何用正则表达式完成的:

var str = "*<BR> Bullet1 *<BR>Bullet 2 *<BR>Bullet 3 *<BR>Bullet 4";

var res = "<ul>" + str.replace(/\*<BR>[\s]?([^\*]+)/g, "<li>$1</l1>") + "</ul>";

console.log(res);

输出:

<ul><li>Bullet1 </li><li>Bullet 2 </li><li>Bullet 3 </li><li>Bullet 4</li></ul>

工作示例:

http://jsfiddle.net/BkbrF/4/