2015-01-15 53 views
1

我正在使用一些在运行时创建的html,我需要在Javascript中使用正则表达式获取文本。 HTML是否已包含一些文本编辑框,看起来像这样的图像标签:Javascript正则表达式在括号中提取

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

我需要能够提取“[[图像: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); 
} 

变种imageTagPattern =新正则表达式( “[[图片:\ S \ S +]]” 中, “i”);

Debuggex Demo

+1

[regex101.com是伟大的,测试你的正则表达式](https://regex101.com/r/eD2yV3/1) – Moob 2015-01-15 16:55:48

+0

http://jsfiddle.net/30t26f1c/ – Moob 2015-01-15 17:00:05

+0

这是一个伟大的坐即谢谢你的提示! – 3CATTS 2015-01-15 17:01:19

回答

1

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

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

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

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

这正是我所需要的。非常及时的答复感谢。 – 3CATTS 2015-01-15 17:05:17

+0

不客气,很高兴它解决了。 – anubhava 2015-01-15 17:05:58