我正在尝试使用the Javascript Creole Wiki Markup Parser解析一些Wiki样式的标记。我正在尝试扩展解析器来解析div标签,如下所示:
标记:<< any_content_here<<
HTML:<div class="left">content</div
&gt;
标记:&gt;&gt; any_content_here&gt;&gt;
HTML:<div class="right">content</div>
标记:^^ any_content_here ^^
HTML:<div class="horz">content</div>
解析器使用正则表达式来解析标记,但正则表达式绝对不是我的强项,因为js文件实际上没有任何注释,我发现它特别难以编辑。我已经发布了这个人的博客,要求对此提供一些帮助,但由于帖子大约2岁,我不希望很快就能收到回复......
任何有关自定义的帮助,或者如果有人可以指出已经支持div的javascript解析器,那将非常感激。
答案 0 :(得分:1)
如果你不关心嵌套,你甚至不需要正则表达式。只需将“<<
”替换为“<div class='left'>
”,依此类推。
要允许嵌套,您必须(1)更改标记,以使结束与开始不同(例如<L>
内容</L>
)和(2)运行正则表达式多次因为有水平。正则表达式(左边的div)将是:
<L>(((?!</?L>).)*)</L>
替换字符串:
<div class="left">$1</div>
这是一个负责解析所有级别的函数:
function parseLeft(markup) {
var regex = /<L>(((?!<\/?L>).)*)<\/L>/g;
out = markup.replace(regex, '<div class="left">$1</div>');
if (out.length == markup.length) {
return out;
} else {
return parseLeft(out);
}
}
行动中的例子:
> parseLeft('<L> Outer div <L>inner div</L>outer again </L>');
<div class="left"> Outer div <div class="left">inner div</div>outer again </div>