为什么这个正则表达式在javascript实现中没有正确匹配组?

时间:2016-09-12 03:27:23

标签: javascript regex

我有这个案子:

我需要匹配<a></a>元素中的href链接。 我的正则表达式<a href="([^"]*)"

检查它在这里工作 - &gt; https://regex101.com/r/tB1hJ0/1

问题是当我尝试在javascript中使用此正则表达式时。

如果我尝试使用这些实现,我得不到相同的结果:

var input = '2\
<p><a href="http://www.quackit.com/html/tutorial/html_links.cfm">Example Link</a></p>\
<div class="more-info"><a href="http://www.quackit.com/html/examples/html_links_examples.cfm">More Link Examples...</a></div>';

console.log((/<a href="([^"]*)"/gmi).exec(input)); //["<a href="http://www.quackit.com/html/tutorial/html_links.cfm"", "http://www.quackit.com/html/tutorial/html_links.cfm",
console.log(input.match(/<a href="([^"]*)"/gmi)); //["<a href="http://www.quackit.com/html/tutorial/html_links.cfm"", "<a href="http://www.quackit.com/html/examples/html_links_examples.cfm""]

我做错了什么?

2 个答案:

答案 0 :(得分:1)

您需要获取捕获组,而不是匹配的文本。

var re = /<a href="([^"]*)"/gm; 
var str = '2\n<p><a href="http://www.quackit.com/html/tutorial/html_links.cfm">Example Link</a></p>\n<div class="more-info"><a href="http://www.quackit.com/html/examples/html_links_examples.cfm">More Link Examples...</a></div>';
match = re.exec(str);
while (match != null) {
  console.log("Matching text:"+match[0]) 
  console.log("Matching group:"+match[1]);//You need this
  match = re.exec(str);
}

答案 1 :(得分:0)

你需要这个用于整个正则表达式匹配

&#13;
&#13;
/<a href="([^"]*)"/gm
&#13;
&#13;
&#13;