我有一個非常簡單的Javascript BBCode解析器,用於客戶端實時預覽(不希望爲此使用Ajax)。問題IST,此解析器只能識別所述第一列表元素:Javascript BBCode解析器只識別第一個列表元素
function bbcode_parser(str) {
search = new Array(
/\[b\](.*?)\[\/b\]/,
/\[i\](.*?)\[\/i\]/,
/\[img\](.*?)\[\/img\]/,
/\[url\="?(.*?)"?\](.*?)\[\/url\]/,
/\[quote](.*?)\[\/quote\]/,
/\[list\=(.*?)\](.*?)\[\/list\]/i,
/\[list\]([\s\S]*?)\[\/list\]/i,
/\[\*\]\s?(.*?)\n/);
replace = new Array(
"<strong>$1</strong>",
"<em>$1</em>",
"<img src=\"$1\" alt=\"An image\">",
"<a href=\"$1\">$2</a>",
"<blockquote>$1</blockquote>",
"<ol>$2</ol>",
"<ul>$1</ul>",
"<li>$1</li>");
for (i = 0; i < search.length; i++) {
str = str.replace(search[i], replace[i]);
}
return str;}
[表]
[*] adfasdfdf
[*] asdfadsf
[*] asdfadss
[/列表]
只有第一個元素轉換爲HTML列表元素,其餘的保留爲BBCode:
[*] asdfadss
我試圖用 「\ S」, 「\ S」 和 「\ n」 玩弄但我主要用於PHP正則表達式,完全新的JavaScript正則表達式。有什麼建議麼?