如何在从 javascript 中的 json 对象中提取字符串时保留转义序列.(字符串实际上是正则表达式模式)
How to retain escape sequences while extracting strings from json objects in javascript. (Strings are actually regex patterns)
我有一个JSON对象,如下所示:
var jsonObject = {"regex":"<span class='"Value'">''$(.+?)<''/span>"};
我的目标是使用此正则表达式从 html 文档中抓取值。
var match = html.match(new RegExp(jsonObject.regex, 'i'));
但是,这将返回错误。问题似乎是正则表达式字符串中的转义序列在字符串jsonObject.regex中丢失
对 jsonObject.regex 的调用返回
< span class="Value">'$(.+?)<' /span>
(像 ''" 和 '''' 这样的转义序列丢失)
我可以使用 javascript 替换相应的字符,但这似乎是低效的做法,因为我已经在 json 对象中拥有正确的格式。
任何线索或解决方法都值得赞赏。谢谢!
你在这里做错了两件事。
首先,您正在尝试构建一个在HTML上使用任意正则表达式的程序。别这样。你在客户端有一个 DOM,你应该使用可用的选择器引擎之一。示例包括浏览器内置document.querySelectorAll()
,Sizzle(也是jQuery的一部分),NWMatcher或基于XPath的选择器引擎,如XPath.js。
然后,您显然不使用 JSON 序列化程序在服务器端构建 JSON 字符串,否则客户端不会发生混乱转义之类的事情。
最后,第一个代码示例中的内容不是 JSON。这是一个 JavaScript 对象文字。JSON 始终是一个字符串:
'{"regex":"<span class='"Value'">''$(.+?)<''/span>"}'
在jQuery中选择你似乎想要的东西会变得像
var value = $("span.value").text();
但正如我所说,你不必使用jQuery,如果HTML抓取是你的主要目标,那么还有更轻量级的替代方案。
相关文章:
- 带有转义序列html的链接
- jQuery 字符串转义 onclick='deleteRow(item“+count+”)' 如何引用项目和计数
- 聊天应用程序字符串转义
- 转义序列jQuery,用于在引号内使用变量
- 等价于str.decode('字符串转义')
- 将查询字符串反序列化为JSON对象
- 从变量中的字符串转义 JavaScript 中的双引号
- 防止替换 JavaScript 正则表达式中的转义序列
- 如何在从 javascript 中的 json 对象中提取字符串时保留转义序列.(字符串实际上是正则表达式模式)
- Angular.js 中的部分 HTML 字符串转义
- JavaScript转义序列
- 字符串转义,从文本文件中读取
- 是否有js函数将xml特殊字符替换为转义序列
- 如何在字符串中分配转义序列
- 有不同类型的转义序列吗
- Unicode字符转义序列在handle.js中打印不正确
- 如何使用javascript呈现unicode转义序列
- ES6:创建ASCII字符串的字符转义序列不正确
- 将字符串转义为单引号字符串
- 我的代码在这个“;字符串中的转义序列”;FreeCodeCamp上的挑战