Javascript正则表达式提取括号中的内容

标签 javascript regex html

我正在处理一些在运行时创建的html,我需要在Javascript中使用正则表达式获取文本。该 html 有一个编辑框,其中包含一些文本和一个图像标记,如下所示:

<img src="http://server/directory/subdirectory/Images1/logo_aa.png" alt=" logo_ce" data-tag=" [[image: logo_aa]] ">

我需要能够提取“[[image: logo_aa]]”部分,然后用它替换整个 html 图像标签。但是或者出于某种原因,当我运行正则表达式时,它只得到“a]”。这是我正在使用的代码示例:

var imgHtmlPattern = new RegExp("<img[^>]*?>", "g");
var imageTagPattern = new RegExp("\[\[Image:\s\S+\]\]", "i");

var str = 'A whole paragraph of text here. <img src="http://server/directory/subdirectory/Images1/logo_aa.png" alt=" logo_ce" data-tag=" [[image: logo_aa]] ">';

var matches = str.match(imgHtmlPattern);

for (i = 0; i < matches.length; i++) {

    var test = imageTagPattern.exec(matches[i]);
    alert(test);

    //  var tag = matches[i].match(imageTagPattern);
    //  alert(tag);
}

var imageTagPattern = new RegExp("[[Image:\s\S+]]", "i");

Debuggex Demo

最佳答案

您需要使用双 \\ 来创建 RegExp 对象:

var imageTagPattern = new RegExp("\\[\\[Image:\\s\\S+\\]\\]", "i");

或者只使用正则表达式文字:

var imageTagPattern = /\[\[Image:\s\S+\]\]/i;

关于Javascript正则表达式提取括号中的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27968623/

相关文章:

javascript - 作为 element.contains() 参数输入的有效属性是什么?

regex - 如何获得 Regex.Split VB.NET 的相反结果?

javascript - JavaScript/HTML 解耦有什么值(value)吗?如果是这样怎么办?

Javascript React 组件状态

javascript - 使用 jquery $.get() 传递数据

javascript - 在 Javascript 中组合两个正则表达式

javascript - 如何强制 Antd 将元素附加为 div React 呈现的子元素而不是 HTML 主体?

css - Div 位置 - css

javascript - 如何为 JQuery $.ajax 同步请求设置超时并执行某些操作

javascript - 用于在 jquery.tablesorter.js 数字字段中拨号的正则表达式