我喜歡stackexchange引用的方式,我試圖將其添加到我的網站,但沒有讓它跨越多行,只有一行。我需要改變做多行?塊報價格式
以下是我目前正在使用:
val = val.replace(/^>(.+?)($|\n)/ig, "<blockquote>$1</blockquote>");
編輯
我決定去一個不同的風格。
val = val.replace(/""([\s\S]*.+?)""/igm, "<blockquote>$1</blockquote>");
我喜歡stackexchange引用的方式,我試圖將其添加到我的網站,但沒有讓它跨越多行,只有一行。我需要改變做多行?塊報價格式
以下是我目前正在使用:
val = val.replace(/^>(.+?)($|\n)/ig, "<blockquote>$1</blockquote>");
編輯
我決定去一個不同的風格。
val = val.replace(/""([\s\S]*.+?)""/igm, "<blockquote>$1</blockquote>");
我放棄了這樣做的正則表達式。
var a = '>abc\n>def\n>ghi'.split(/\n/); // [">abc", ">def", ">ghi"]
var previousInBlock = false;
var currentInBlock = false;
var nextInBlock = false;
for(var i = 0; i < a.length; i++) {
previousInBlock = currentInBlock;
currentInBlock = a[i].indexOf(">") === 0;
nextInBlock = (i + 1) < a.length ? a[i+1].indexOf(">") === 0 : false;
if (currentInBlock) {
a[i] = a[i].slice(1);
if(!previousInBlock) {
a[i] = "<blockquote>" + a[i];
}
if (!nextInBlock) {
a[i] = a[i] + "</blockquote>";
}
}
}
a.join("\n");
上面的代碼可以處理多組blockquotes。
而不是替換,嘗試匹配每一行,然後將匹配的行組合成一個字符串。
事情是這樣的:
var val = '>abc\n>def\n>ghi',
regex = /(?:^>)(.+)(?:$|\n)/img,
match = '', quote = [];
while((match = regex.exec(val)) !== null){
quote.push(match[1]);
}
val = '<blockquote>'+quote.join('<br/>')+'</blockquote>';
正在工作! –
@RyanNaddy:酷!很高興我可以幫助:-) –
這不適用於多套blockquotes –
見http://stackoverflow.com/questions/1068280/javascript-regex-multiline-flag-doesnt-work – glomad