2016-06-01 164 views
-2

我需要將elementId與以elementId開頭的任何其他子元素ID進行匹配。例如, 子元素的ID標記爲1-1,1-2,...,4-5,...,8-13等。 因此,如果元素ID是2,我需要通過過濾獲取該元素的所有子元素(結果應該是2-1,2-2,2-3,...) 我試過使用這種模式,但它不起作用。要匹配ElementId的JavaScript RegExp

var regEx = '/['+elementId+']*/'; 
//elementsId is a var derived from a previous expression 

爲了匹配這個,我應該使用什麼RegExp模式?我已經提供了下面的代碼段。

jsPlumb.draggable(newAgent, { 
       containment: 'parent' 
      }); 
      newAgent.on('click', '.cancel', function (e) { 

       alert(newAgent.attr('id')); 
       var elementId= newAgent.attr('id'); 
       var regEx = '/['+elementId+']*/'; 
       alert (regEx); 

       for(var m=0; m<list.length; m++) 
       { 
        if(list[m][0].exec(regEx) || list[m][1].exec(regEx)) 
        { 
         alert('Deleting connection between ' + list[m][0] + '&' + list[m][1]); 
        } 
       } 

       jsPlumb.detachAllConnections(newAgent.attr('id')); 
       jsPlumb.removeAllEndpoints(newAgent.attr('id')); 
       jsPlumb.detach(newAgent.attr('id')); 
       $(newAgent).remove(); 
      }); 
+0

var regEx ='/ \\ ['+ elementId +'[^ \\]] * \\] /';試試這個正則表達式 –

回答

0

您可以使用構造函數,知道你需要逃避手動特殊字符建立正則表達式:link

var ids = ["1-1", "2-1", "2-2", "3-1", "3-2", "3-3", "3-4", "3-5"]; 
 

 
var buildRegex = function(id) { 
 
    return new RegExp(id + '\\-\\d+'); 
 
} 
 

 
for (var i = 1; i <= 3; ++i) { 
 
    var reg = buildRegex(i); 
 
    for (var k = 0; k < ids.length; ++k) { 
 
    if (reg.test(ids[k])) { 
 
     console.log(ids[k] + " is a sub element of " + i); 
 
    } 
 
    } 
 
}

+0

謝謝。現在工作。 –

0

我覺得你的正則表達式應該等於:'^' + elementId + '-'
這將檢查以elementid開頭的元素 -