.replace()无法在嵌入式JavaScript中运行
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了.replace()无法在嵌入式JavaScript中运行相关的知识,希望对你有一定的参考价值。
当我尝试运行以下代码时,它不会将&lt,>&#34替换为其等效的caharacters
<% if(typeof myTable !== 'undefined'){ %>
<% myTable = myTable.replace('<','<').replace('>', '>').replace('"', '"') %>
<script>
localStorage['text'] += "<%= myTable %>";
</script>
<% myTable = undefined; %>
<% } %>
当我检查myTable的值,在ejs的plceholder标签中替换时,它仍然以原始形式包含这些字符。
myTable = "<table class="table table-bordered table-hover"><thead><tr><th class="col"><p contenteditable="true">Head</p></th><th class="col"><p contenteditable="true">Head</p></th></tr></thead><tbody><tr><td><p contenteditable="true">Null</p></td><td><p contenteditable="true">Null</p></td></tr><tr><td><p contenteditable="true">Null</p></td><td><p contenteditable="true">Null</p></td></tr></tbody></table>"
我该怎么办?
答案
我会尝试存储替换字符串的值
<% myTable = myTable.replace('<','<').replace('>', '>').replace('"', '"') %>
否则它就会丢失。
来自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 = "<table class="table table-bordered table-hover"><thead><tr><th class="col"><p contenteditable="true">Head</p></th><th class="col"><p contenteditable="true">Head</p></th></tr></thead><tbody><tr><td><p contenteditable="true">Null</p></td><td><p contenteditable="true">Null</p></td></tr><tr><td><p contenteditable="true">Null</p></td><td><p contenteditable="true">Null</p></td></tr></tbody></table>"
myTable = myTable.replace(/</g,'<').replace(/>/g, '>').replace(/"/g, '"');
console.log(myTable);
以上是关于.replace()无法在嵌入式JavaScript中运行的主要内容,如果未能解决你的问题,请参考以下文章
JavaScript 正则表达式 string.replace( regex, "$1" );中“$1”的含义 及邮箱正则表达式