JavaScript 匹配 ElementId 的正则表达式

JavaScript RegExp to match ElementId

我需要将 elementId 与以该 elementId 开头的任何其他子元素 ID 相匹配。例如, 子元素的 ID 标记为 1-1、1-2、...、4-5、...、8-13 等。 所以,如果Element ID是2,我需要过滤得到这个元素的所有子元素(结果应该是2-1, 2-2, 2-3, ...) 我尝试使用此模式,但它不起作用。

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();
            });

您可以使用构造函数构建正则表达式,知道您需要手动转义特殊字符: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);
    }
  }
}

我认为你的正则表达式应该等于:'^' + elementId + '-'.
这将检查以 elementid-

开头的元素