0
嗨,大家好,我想知道如果有人能夠幫助我嗎?在我的網站上我創建了一個博客。在JavaScript中,我創建了一個程序來格式化文本。它使用正則表達式來格式化/轉換文本。目前它有一些不可預期的結果。如果您滾動到位於this link的帖子的底部,您將看到一些隨機標籤。我不知道他們來自哪裏或他們出現的原因。如果有人能夠幫助,我會非常感激。Javascript字符串操作與正則表達式
這是用來格式化文本的JavaScript:
function viewPost(val1) {
var msg = val1.innerHTML;
console.log(msg);
// disable <and> to prevent scripting attacks
msg = msg.replace(/<(.*?)>/gi, "<$1>");
msg = msg.replace(/<\/(.*?)>/gi, "</$1>");
// preserve new lines
msg = msg.replace(/\n/gi, "<br />");
//colon
msg = msg.replace(/\:/gi, ":");
// Basic BBCodes.
// head large
msg = msg.replace(/\[hdlg\]/gi, '<h1>');
msg = msg.replace(/\[\/hdlg\]/gi, '</h1>');
// head medium
msg = msg.replace(/\[hdmd\]/gi, '<h2>');
msg = msg.replace(/\[\/hdmd\]/gi, '</h2>');
// head small
msg = msg.replace(/\[hdsm\]/gi, '<h3>');
msg = msg.replace(/\[\/hdsm\]/gi, '</h3>');
// bold text
msg = msg.replace(/\[b\]/gi, "<strong>");
msg = msg.replace(/\[\/b\]/gi, "</strong>");
// italic text
msg = msg.replace(/\[i\]/gi, "<em>");
msg = msg.replace(/\[\/i\]/gi, "</em>");
// underlined text
msg = msg.replace(/\[u\]/gi, "<u>");
msg = msg.replace(/\[\/u\]/gi, "</u>");
// centre text
msg = msg.replace(/\[c\]/gi, '<p style="text-align:center;">');
msg = msg.replace(/\[\/c\]/gi, "</p>");
// left align text
msg = msg.replace(/\[l\]/gi, '<p style="text-align:left;">');
msg = msg.replace(/\[\/l\]/gi, "</p>");
// right align text
msg = msg.replace(/\[r\]/gi, '<p style="text-align:right;">');
msg = msg.replace(/\[\/r\]/gi, "</p>");
// justify text
msg = msg.replace(/\[j\]/gi, '<p style="text-align:justify;">');
msg = msg.replace(/\[\/j\]/gi, "</p>");
// code blocks
msg = msg.replace(/\[code\]/gi, '<div style="background:#484848;color:#ffffff;text-align:left;border-radius:8px;padding:10px;overflow:hidden;">');
msg = msg.replace(/\[\/code\]/gi, '</div>');
// def lists
msg = msg.replace(/\[def\]/gi, '<dl>');
msg = msg.replace(/\[\/def\]/gi, '</dl>');
// def term
msg = msg.replace(/\[term\]/gi, '<dt>');
msg = msg.replace(/\[\/term\]/gi, '</dt>');
// def description
msg = msg.replace(/\[desc\]/gi, '<dd>');
msg = msg.replace(/\[\/desc\]/gi, '</dd>');
// unordered list
msg = msg.replace(/\[unord\]/gi, '<ul>');
msg = msg.replace(/\[\/unord\]/gi, '</ul>');
// ordered list
msg = msg.replace(/\[ord\]/gi, '<ol>');
msg = msg.replace(/\[\/ord\]/gi, '</ol>');
// list item
msg = msg.replace(/\[item\]/gi, '<li>');
msg = msg.replace(/\[\/item\]/gi, '</li>');
// links
msg = msg.replace(/\[url=(.*?)\](.*?)/gi, '<a href="$1" target="_blank">$2');
msg = msg.replace(/\[\/url\]/gi, '</a>');
// images
msg = msg.replace(/\[postpic=(.*?)\sclass=(.*?)\stitle=(.*?)\salt=(.*?)\sstyle=(.*?)\]/gi, '<img src="/images/postAssets/$1" class="$2" title="$3" alt="$4" style="$5" />');
msg = msg.replace(/\[\/postpic\]/gi, "");
// font colour [colour=COL] [/colour]
msg = msg.replace(/\[colour=(.*?)\]/gi, '<span style="color:$1;">');
msg = msg.replace(/\[\/colour\]/gi, '</span>');
// tables
msg = msg.replace(/\[table\]/gi, '<table style="padding: 5px;">');
msg = msg.replace(/\[\/table\]/gi, '</table>');
// table row
msg = msg.replace(/\[trow\]/gi, '<tr style="border:1px solid #000000;">');
msg = msg.replace(/\[\/trow\]/gi, '</tr>');
// table header
msg = msg.replace(/\[thead\]/gi, '<th style="padding: 5px;">');
msg = msg.replace(/\[\/thead\]/gi, '</th>');
// table data
msg = msg.replace(/\[tdata\]/gi, '<td style="padding: 5px;">');
msg = msg.replace(/\[\/tdata\]/gi, '</td>');
// subscript
msg = msg.replace(/\[sub\]/gi, '<sub>');
msg = msg.replace(/\[\/sub\]/gi, '</sub>');
// superscript
msg = msg.replace(/\[sup\]/gi, '<sup>');
msg = msg.replace(/\[\/sup\]/gi, '</sup>');
val1.innerHTML = msg;
console.log(val1.innerHTML);}
可以提供任何建議將受到歡迎。正如我所說,我不確定爲什麼會發生這種情況,但我相當確定它是JavaScript的一個問題。它顯示的頁面是一個.aspx頁面,不確定是否與它有關,但是爲了防萬一,認爲id。如果需要進一步的細節,請告訴我,我會提供。
類似msg = msg.replace(//gi,「<string>」); ? –
不是頁面中的HTML不應該是HTML--它應該是文本 - 你需要轉義整個ASP.NET輸出 –
有關如何做的任何建議?對不起,是一個痛苦,js和正則表達式不是我的工作的強項:) –