2013-07-06 49 views
0

我的問題很少。 我有這樣的:Javascript - Regexp - 全球搜索問題

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

此代碼給什麼。我敢肯定,輸入和正則表達式是正確的,但:

  1. 它給了我一個錯誤:無法讀取的null財產1
  2. 當我刪除[1]然後​​並且它也不是數組。

任何想法是什麼錯?

+0

請顯示'content'字符串中的內容。 – mishik

回答

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"); 
+1

或者,如果OP確實需要一個字符串(因爲他正在動態構建它),'content.match(new RegExp(string,'gi'))[1];' –

2

除去正則表達式引號或使用new RegExp構造函數。它應該是:

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

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

使用正則表達式的構造函數:

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

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