使用正则表达式进行Javascript字符串操作

Javascript string manipulations with regex

本文关键字:Javascript 字符串 操作 正则表达式      更新时间:2023-09-26

大家好,我想知道是否有人能帮我?在我的网站上,我创建了一个博客。在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页面,不确定这是否与它有关,但我想我会说以防万一。如果需要任何进一步的细节,请告诉我,我会提供。

您的代码块包含如下文本:

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

这看起来像两个<string>标签

<ul>
<li>Colour
<ul>

这些需要转义,因为它们当前可能会被val1.innerHTML = msg;调用中的浏览器自动关闭。