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-
开头的元素
我需要将 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-