javascript - 带有正则表达式的 JavaScript 中的第三个嵌套引用级别

标签 javascript regex quotes

我正在尝试在 JavaScript 中创建一个 RegExp 对象,但由于引用限制而无法创建。我正在使用 outerHTML 属性搜索已转换为字符串 dataCellsText 的 HTML 文档的一部分。

因为它是一个 HTML 文档,我有时倾向于在 "' 引号之间切换,我想我会检查两者,因此 ["']。但是 ["'] 阻止我这样做。我需要使用构造函数 new RegExp(),因为我需要在表达式中插入一个变量,这意味着我必须用 "' 引号将表达式括起来,这两个引号都已被采用。

鉴于所有这些,我需要的是第三个引用级别。我知道 \"...\",但我认为这会干扰正则表达式。我也知道 ",但这不是 XML 或 HTML,因此也不适用。

以下是我的正则表达式代码变成的乱七八糟的东西(语法高亮会进一步说明我的观点):

var regexXSearch = new RegExp("<div id=["'](\w+-*\w*)["']\sdata-cell-x=" + cellCoords.x + ">", "g");
var regexXResults = regexXSearch.exec(dataCellsText);

有没有办法摆脱这种报价雪崩?如前所述,我需要第三种类型的报价,但似乎没有这种报价适用于这种情况。

最佳答案

知道变量只包含整数,你不需要 escape 函数,但你仍然需要使用双反斜杠来转义正则表达式元字符。

var cellCoordsX = "300"
var regexXSearch = new RegExp("<div id=[\"'](\\w+-*\\w*)[\"']\\sdata-cell-x=[\"']" + cellCoordsX + "[\"']>", "g");
alert("<div id=\"123-Ac_fg\" data-cell-x=\"300\">".match(regexXSearch));

关于javascript - 带有正则表达式的 JavaScript 中的第三个嵌套引用级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31976370/

相关文章:

regex - 如何使用正则表达式仅匹配每行字符串的第一次出现

regex - Bash 正则表达式替换两个不同字符串之间的所有内容

mysql - MySQL 中何时使用单引号、双引号和反引号

regex - 在 MATLAB 中提取单引号之间的文本

mysql - Perl DBD::MySQL execute 不支持 limit 关键字后的字符串参数。始终被视为数字

javascript - div 换行内容或全屏

javascript - 范围变量未在指令之外设置

javascript - 拖放调整拖放区大小

javascript - 使用 Capybara 检测 javascript 事件处理程序

java - 正则表达式 - 不应允许连续出现空格