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