簡體   English   中英

使用正則表達式解析Javascript中的Wiki標記

[英]Parsing Wiki markup in Javascript using regex

我正在嘗試使用Javascript Creole Wiki Markup Parser解析一些Wiki樣式的標記。 我正在嘗試擴展解析器來解析div標簽,如下所示:

標記:<< any_content_here <<
HTML: <div class="left">content</div >

標記:>> any_content_here >>
HTML: <div class="right">content</div>

標記:^^ any_content_here ^^
HTML: <div class="horz">content</div>

解析器使用正則表達式解析標記,但是regex絕對不是我的強項,並且由於js文件幾乎沒有注釋,因此我發現編輯起來特別困難。 我已經在這個人的博客上發布了一些與此相關的幫助,但是由於該帖子大約有2年的歷史,所以我希望不久后都不會收到回復。

關於自定義此設置的任何幫助,或者如果有人可以指出已經支持div的JavaScript解析器,將不勝感激。

如果您不關心嵌套,則甚至不需要正則表達式。 只需將“ << ”替換為“ <div class='left'> ”等。

為了允許嵌套,您將必須(1)更改標記,使結尾與開頭有所不同(例如<L> content </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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM