2015-12-17 43 views
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, "&lt;$1&gt;"); 
    msg = msg.replace(/<\/(.*?)>/gi, "&lt;&#47;$1&gt;"); 

    // preserve new lines 
    msg = msg.replace(/\n/gi, "<br />"); 

    //colon 
    msg = msg.replace(/\:/gi, "&#58;"); 

    // 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。如果需要進一步的細節,請告訴我,我會提供。

回答

0

你的代碼塊包含文字,如:

List<string> cols = new List<string>(); 

這看起來像兩個<string>標籤

<ul> 
<li>Colour 
<ul> 

這些需要進行轉義,因爲它們很可能目前獲得自動通過關閉您的val1.innerHTML = msg;調用中的瀏覽器。

+0

類似msg = msg.replace(/ /gi,「<string>」); ? –

+0

不是頁面中的HTML不應該是HTML--它應該是文本 - 你需要轉義整個ASP.NET輸出 –

+0

有關如何做的任何建議?對不起,是一個痛苦,js和正則表達式不是我的工作的強項:) –