如何保护我的搜索特殊标志?

时间:2018-02-13 23:25:42

标签: javascript

我正在使用google books api进行搜索

" https://www.googleapis.com/books/v1/volumes?q=&#34 +文本

使用时:

book.innerHTML = '<input type="button" data-text="' data.items[i].volumeInfo.description +'">';

我的一些结果不能很好地发挥作用,我发现一些描述在开头就有引用,即

&#34; \&#34;就在那里,挂在学校上方的天空中:绿色的骷髅头上有一条毒蛇的舌头,只要他们进入建筑物就会留下食死者的痕迹......无论他们在哪里谋杀了...... \&#34;当邓布利多&#34;

如何避免此错误?

2 个答案:

答案 0 :(得分:0)

这不是错误。 Google返回的数据采用JSON格式。

JSON.org我们看到JSON使用双引号,但不使用单引号作为标记语法。转义的双引号 - 看起来像这样:\"旨在防止字符串过早关闭。

当返回的数据通过JSON parse()命令运行时,它会将“string-ified”数据转换为JavaScript对象。解析后,您可以使用点.表示法访问属性。括号[variable]表示法。

尝试这样的事情:

var searchUrl = 'https://www.googleapis.com/books/v1/volumes?q=' + text;
var response = useYourAjaxMethodHere(searchUrl);

response = JSON.parse(response);

console.log(response.items[0].volumeInfo.description);

答案 1 :(得分:-1)

而不是指定你不喜欢的字符串中的特殊字符,你可以期待你想要的东西。例如,如果您的字符串必须只包含字母(a到z和A到Z),数字,空格和点,那么以下内容对您有用

var str = data.items[i].volumeInfo.description
str = str.replace(/[^a-zA-Z0-9 \.,]/g, "");

<强>解释

[a-z]表示来自a-z

的任何字符

[a-zA-Z]表示来自a-z和A-Z

的任何字符

[a-zA-Z0-9]表示来自a-z和A-Z以及0-9的任何字符

[a-zA-Z0-9]表示来自a-z和A-Z以及0-9和白色空格的任何字符

[a-zA-Z0-9 \。]表示来自a-z和A-Z以及0-9和白色空格和点的任何字符

如果您想允许更多字符,只需将它们添加到逻辑中即可。例如,如果你想允许下划线'_',那么你的新正则表达式将是

 str.replace(/[^a-zA-Z0-9 \._]/g, "");