我需要将所有<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中。