2016-06-01 1 views
-2

Je dois faire correspondre l'élément elementId avec tout autre ID d'élément secondaire commençant par l'élément elementId. Par exemple, Les sous-éléments ont leurs ID marqués comme 1-1, 1-2, ..., 4-5, ..., 8-13, etc. Donc, si l'ID d'élément est 2, je dois obtenir tous les sous-éléments de cet élément en filtrant (Le résultat devrait être 2-1, 2-2, 2-3, ...) J'ai essayé d'utiliser ce modèle mais cela ne fonctionne pas.JavaScript RegExp correspondant à ElementId

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

Afin de faire correspondre cela, quel est le modèle RegExp que je devrais utiliser? J'ai fourni le segment de code ci-dessous.

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 = '/ \\ [' + élémentId + '[^ \\]] * \\] /'; essayez cette regex –

Répondre

0

Vous pouvez construire regexp en utilisant un constructeur, sachant que vous devez échapper les caractères manuellement spéciaux: 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

Merci. Fonctionne maintenant. –

0

Je pense que votre Regex devrait être égal à: '^' + elementId + '-'.
cela va vérifier les éléments qui commencent par elementid-