在JavaScript字符串中转义单引号和双引号

时间:2016-09-14 12:00:18

标签: javascript

我的字符串${field.value}有值

'<table id="tblUserList">            
        <tbody>                 
        <tr>
        <td style="padding: 10px;">some test' and "xyz"</td>
        </tr>
        </tbody
        </table>'

我试过的是

escapestring = '${field.value}'

escapestring.replace("'", "\'");

document.getElementById("tblUserList").innerHTML  = escapestring ;

错误,它无法正常工作

Uncaught SyntaxError: Invalid regular expression flags

我想在some test' and "xyz"

中逃避单引号和双引号

我正在尝试制作string safe for inserting into HTML table.

更新:值来自服务器,我无法跳过字符串中的HTML元素

JSFIDDLE:https://jsfiddle.net/e3jehrc5/1/

感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

在这里读行......

escapestring = '${field.value}'

我猜这里有一些服务器端模板语言正在填充${field.value}的值。第一:你不应该动态生成Javascript,通过AJAX等获取这个HTML片段会更好。

话虽如此,由于您的服务器在这里动态生成Javascript源代码,因此需要注意生成语法上有效的代码。现在你天真地将一个字符串粘贴到另一个字符串中,而不考虑你所生成的语法要求。你无法在Javascript中修复此问题,因为Javascript本身已经无效。您的模板语言需要将字符串正确编码为有效的Javascript。如何做到这完全取决于你的模板系统;这是一个PHP示例:

var html = <?= json_encode($field->value); ?>;

这里的JSON编码会产生有效的Javascript文字,这就是你在这里寻找的所有内容。

另见The Great Escapism (Or: What You Need To Know To Work With Text Within Text)

答案 1 :(得分:-2)

使用此

import re
query = 'CREATE TABLE afg_temp (tadm1_code INTEGER NOT NULL, tadm1_name VARCHAR(10) NOT NULL, test VARCHAR(4));'
print re.sub(r'VARCHAR\([0-9]*\)','VARCHAR(254)',query)