2015-12-17 46 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和正则表达式不是我的工作的强项:) –