0

我有小问题。我有这个:

var result1=content.match("/<a [^>]*href\s*=\s*[\"']([^>\"']*)[\"'][^>]*>/gi")[1];

这段代码什么也没给出。我确定输入和正则表达式是正确的,但是:

  1. 它给了我一个错误:无法读取1.null
  2. 当我删除[1]然后result1 = null它也不是数组。

知道有什么问题吗?

4

2 回答 2

2

删除正则表达式周围的引号或使用new RegExp构造函数。它应该是:

var result1 = content.match(/<a [^>]*href\s*=\s*[\"']([^>\"']*)[\"'][^>]*>/gi);

http://jsfiddle.net/wGWEt/1/

使用 RegExp 构造函数:

var result1 = content.match(RegExp("<a [^>]*href\s*=\s*[\"']([^>\"']*)[\"'][^>]*>", "gi"));

http://jsfiddle.net/wGWEt/2/

于 2013-07-06T11:52:26.907 回答
2

您正在尝试将正则表达式作为字符串传递:

content.match("/<a [^>]*href\s*=\s*[\"']([^>\"']*)[\"'][^>]*>/gi")[1];

应该

content.match(/<a [^>]*href\s*=\s*[\"']([^>\"']*)[\"'][^>]*>/gi)[1];

例子:

> a = "abc"
"abc"
> a.match("/abc/")
null
> a.match(/abc/)
["abc"]

按照 m.buettner 的评论。如果您需要从字符串构建正则表达式,请使用以下语法:

var my_regex = new RegExp("abc", "gi");
于 2013-07-06T11:53:14.473 回答