将<ol>列表包装到<p>标签中

时间:2017-08-03 15:34:06

标签: javascript regex regex-group

我需要将所有<ol>列表包装到<p></p>标记中。 我试过这样做

text = text.replace(/(<ol>.*<\/ol>)/g, '<p>$1</p>');

但它不起作用。如果我输入了像

这样的文字
 <ol>   <li>item1</li>  <li>item2</li>  <li>item3</li> </ol>

text.replace后文本保持不变。

正如我发现的那样,问题的原因在于多线。 我做了简单的测试。

var list = '<ol>'+   
'<li>item1</li>'+   
'<li>item2</li>'+   
'<li>item3</li>'+  
'</ol>';
list = list.replace(/(<ol>[\s\S].*[\s\S]<\/ol>)/g, '<p>$1</p>');
alert(list);

我得到了结果

<p><ol><li>item1</li><li>item2</li><li>item3</li></ol></p>

但如果我修改测试那么

var list = '<ol>\n'+   
'<li>item1</li>\n'+   
'<li>item2</li>\n'+   
'<li>item3</li>\n'+  
'</ol>';
list = list.replace(/(<ol>[\s\S].*[\s\S]<\/ol>)/g, '<p>$1</p>');
alert(list);

所以我得到了

<ol>
<li>item1</li>
<li>item2</li>
<li>item3</li>
</ol>

修改 不,Nest lists in paragraphs in html不是重复的问题 我需要在表单输入中包装列表,而不是在html中。

0 个答案:

没有答案