.replace()无法在嵌入式JavaScript中运行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了.replace()无法在嵌入式JavaScript中运行相关的知识,希望对你有一定的参考价值。

当我尝试运行以下代码时,它不会将&lt,>&#34替换为其等效的caharacters

<% if(typeof myTable !== 'undefined'){ %>
        <% myTable = myTable.replace('&lt','<').replace('&gt', '>').replace('&#34', '"') %>
        <script>
            localStorage['text'] += "<%= myTable %>";
        </script>
        <% myTable = undefined; %>
<% } %>

当我检查myTable的值,在ejs的plceholder标签中替换时,它仍然以原始形式包含这些字符。

myTable = "&lt;table class=&#34;table table-bordered table-hover&#34;&gt;&lt;thead&gt;&lt;tr&gt;&lt;th class=&#34;col&#34;&gt;&lt;p contenteditable=&#34;true&#34;&gt;Head&lt;/p&gt;&lt;/th&gt;&lt;th class=&#34;col&#34;&gt;&lt;p contenteditable=&#34;true&#34;&gt;Head&lt;/p&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;p contenteditable=&#34;true&#34;&gt;Null&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;p contenteditable=&#34;true&#34;&gt;Null&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p contenteditable=&#34;true&#34;&gt;Null&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;p contenteditable=&#34;true&#34;&gt;Null&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;"

我该怎么办?

答案

我会尝试存储替换字符串的值

<% myTable = myTable.replace('&lt','<').replace('&gt', '>').replace('&#34', '"') %>

否则它就会丢失。

来自docs

replace()方法在字符串中搜索指定的值或正则表达式,并返回一个新的字符串,其中替换了指定的值。

如果这不起作用,尝试一个未转义的蜂蜇版本:"<%- myTable %>";(而不是"<%= myTable %>";)。

另一答案

您应该注意到g标志并使用myTable = myTable.replace而不是myTable.replace

因为replace方法不会更改源字符串,请参阅:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace

请尝试以下代码:

var myTable = "&lt;table class=&#34;table table-bordered table-hover&#34;&gt;&lt;thead&gt;&lt;tr&gt;&lt;th class=&#34;col&#34;&gt;&lt;p contenteditable=&#34;true&#34;&gt;Head&lt;/p&gt;&lt;/th&gt;&lt;th class=&#34;col&#34;&gt;&lt;p contenteditable=&#34;true&#34;&gt;Head&lt;/p&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;p contenteditable=&#34;true&#34;&gt;Null&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;p contenteditable=&#34;true&#34;&gt;Null&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p contenteditable=&#34;true&#34;&gt;Null&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;p contenteditable=&#34;true&#34;&gt;Null&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;"
myTable = myTable.replace(/&lt;/g,'<').replace(/&gt;/g, '>').replace(/&#34;/g, '"');

console.log(myTable);

以上是关于.replace()无法在嵌入式JavaScript中运行的主要内容,如果未能解决你的问题,请参考以下文章

javascrip

JavaScrip和Java一样吗?

javascrip cookie

preg_replace 没有转义“?”在参考文献中

JavaScript 正则表达式 string.replace( regex, "$1" );中“$1”的含义 及邮箱正则表达式

为啥我无法在 python 中正确使用 str.replace() 方法 [关闭]