2012-02-01 98 views
1

我在這裏遇到了一個問題。 我試圖以匹配字符串中的正則表達式中多次出現,但我沒有得到所有出現:Javascript正則表達式 - 匹配多個匹配項

樣品:

 s = new RegExp(';' + y[p][0] + '_' + y[p][1] + '_' + y[p][2] + '_([0-9]*);', 'g'); 
     e = null; 
     e = s.exec(grArr); 
     while (e != null) { 
      alert(e[0]+'-'+e[1]+'-'+e[2]); //debugging output 
      r = r + e[0]; //adding results to output var 
      e = s.exec(grArr); 
     } 

Sample variables: 
//to be searched: 
var grArr=';0_0_709711498101583267971121121179999105110111_11994876;0_0_709711498101583267971121121179999105110111_11994877;0_0_709711498101583267971121121179999105110111_11994878;0_0_709711498101583267971121121179999105110111_11994879;0_0_709711498101583268117110107101108103114252110_11994872;0_0_709711498101583268117110107101108103114252110_11994873;0_0_709711498101583268117110107101108103114252110_11994874;0_0_709711498101583268117110107101108103114252110_11994875;0_0_7097114981015832839910411997114122_11994868;0_0_7097114981015832839910411997114122_11994869;0_0_7097114981015832839910411997114122_11994870;0_0_7097114981015832839910411997114122_11994871;0_1_71114246115115101583276_11994870;0_1_71114246115115101583276_11994874;0_1_71114246115115101583276_11994878;0_1_71114246115115101583277_11994869;0_1_71114246115115101583277_11994873;0_1_71114246115115101583277_11994877;0_1_71114246115115101583283_11994868;0_1_71114246115115101583283_11994872;0_1_71114246115115101583283_11994876;0_1_7111424611511510158328876_11994871;0_1_7111424611511510158328876_11994875;0_1_7111424611511510158328876_11994879;' 
//search Pattern: 
y[0][0]='0'; 
y[0][1]='1'; 
y[0][2]='71114246115115101583283'; 

這導致2個OCCURENCES - 不是3,因爲它應該是。

回答

1

問題是,你使用分號兩次:一次在正則表達式的開始,一次在結尾。

由於在您的示例中,三個「匹配」彼此直接相關,所以找不到第二個匹配項,因爲其前面的分號已經用於上一個匹配項中。

解決方案:在您的正則表達式中使用字邊界('\\b')而不是​​3210。

+0

完美!謝謝!! – 2012-02-01 10:37:24