Javascript - Regexp - 全球搜索问题

时间:2013-07-06 11:47:01

标签: javascript regex node.js output

我没有什么问题。 我有这个:

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

此代码不提供任何内容。我确信输入和正则表达式是正确的,但是:

  1. 它给我一个错误:无法读取1的属性null
  2. 当我删除[1]然后result1 = null时,它也不是数组。
  3. 知道出了什么问题吗?

2 个答案:

答案 0 :(得分:2)

删除regexp周围的引号或使用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/

答案 1 :(得分: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");