2012-01-25 23 views
0

我有預浸匹配的下面的原單代碼在JS使用內部pregmatch可變

for(var i = 0;i<5;i++) 
{ 
patt1 = /Colour1\/(\d+)"/; 
var ab=(data.match(patt1)[1]); 
alert(ab); 
} 

我想知道如果我可以使用變量i的代替1-(5環),如下面example.I可以使用價值以外,但不是pregmatch內。

for(var i = 0;i<5;i++) 
{<br> 
patt1 = /Colour"+i+"\/(\d+)"/; 
var ab=(data.match(patt1)[1]); 
alert(ab); 
} 
+0

這應該回答你的問題:http://stackoverflow.com/questions/494035/how-do-你傳遞一個可變的正則表達式 - javascript – travega

回答

1

你將不得不使用RegExp constructor

for (var i = 0; i < 5; i++) 
{ 
    var patt1 = new RegExp('Colour' + i + '/(\\d+)"'), 
     ab = (data.match(patt1) || [])[1]; 
    alert(ab); 
} 

記住翻番逃不出你的斜線!


在這裏看到它在行動:http://jsfiddle.net/q2C55/

+0

你忘了雙反斜槓 – hugomg

+0

沒有這個沒有工作它返回data.match(patt1)爲空 – vishnu

+0

我不認爲你應該如果你不使用'/ regex /'表示法,你可以跳過斜線。 –

1

喜歡這個?

var ab = data.match('Colour'+i+'/(\\d+)"')[1]; 
+0

沒有「雙引號是必要的我的preg比賽(\ d +)」 – vishnu

+0

對不起,編輯回 –

+0

好吧謝謝你工作 – vishnu

1

當然

patt1 = new RegExp("Colour"+i+"/(\\d+)\""); 

但你也可以跳過循環

patt1 = new RegExp("Colour[0-4]/(\\d+)\""); 
+0

感謝你的工作:) – vishnu

+0

@JustinBiaber:不客氣。我只是更新它,要求在正則表達式中關閉'''。如果不需要,請刪除'\「'。 – 2012-01-25 19:52:13