我正在尝试拆分代表html标记的字符串,以便<ul>
标记最终作为结果数组中的单独索引。我创建了以下正则表达式,它似乎适用于查找<ul>...</ul>
:
/(<ul>.*?<\/ul>)/i
我知道它有效,因为我在这里测试了它:https://regex101.com/r/DNAHzr/2
但是,如下面的剪辑所示,字符串split()
似乎没有在给定的正则表达式上实际拆分我的降价:
var body = "soupp\n\nWhat a bloody nice video!! :)) {{youtube:hyYnAioXOqQ}}\n\nSuppp\n\n<ul>\n<li>1\n</li>\n<li><b>2</b>\n</li>\n</ul>\n{{attachment:2938222}}\n\n<ul>\n<li>1\n</li>\n<li>2\n</li>\n</ul>\n<ol>\n<li>bruhh\n</li>\n<li>twotwo\n</li>\n</ol>"
var comps = body.split(/(<ul>.*?<\/ul>)/i).filter(x => !!x);
console.log(comps);
有人可以帮助我让我的方法正常工作吗?
答案 0 :(得分:1)
如果我理解你的问题,你需要这样的事情:
[ 'soupp\n\nWhat a bloody nice video!! :)) {{youtube:hyYnAioXOqQ}}\n\nSuppp\n\n',
'<ul>',
'\n<li>1\n</li>\n<li><b>2</b>\n</li>\n',
'</ul>',
'\n{{attachment:2938222}}\n\n',
'<ul>',
'\n<li>1\n</li>\n<li>2\n</li>\n',
'</ul>',
'\n<ol>\n<li>bruhh\n</li>\n<li>twotwo\n</li>\n</ol>' ]
是吗?
如果是这样,您应该可以简单地使用:
var comps = body.split(/(<.?ul>)/g);
编辑:
要包含文字和ul
代码,您需要匹配.*
赢得的新内容。你可以用:
var comps = body.split(/(<ul>[\s\S]*?<\/ul>)/g);
哪个应该给你:
[ 'soupp\n\nWhat a bloody nice video!! :)) {{youtube:hyYnAioXOqQ}}\n\nSuppp\n\n',
'<ul>\n<li>1\n</li>\n<li><b>2</b>\n</li>\n</ul>',
'\n{{attachment:2938222}}\n\n',
'<ul>\n<li>1\n</li>\n<li>2\n</li>\n</ul>',
'\n<ol>\n<li>bruhh\n</li>\n<li>twotwo\n</li>\n</ol>' ]