我有以下文字:
*<BR> Bullet1 *<BR>Bullet 2 *<BR>Bullet 3 *<BR>Bullet 4
我想用*<BR>
替换每个<li>
,但也会在文本末尾放置</li>
(当它到达新的*<BR>
时,或者可以&#39}。找到任何)
诀窍在于我还需要<ul>
围绕所有这些来使其成为有效的HTML。
我考虑过使用正则表达式,但说实话,我无法理解它的概念。
答案 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>
工作示例: