正则表达式替换包含变量的字符串

时间:2014-12-03 10:39:36

标签: javascript jquery html regex xpath

我是正则表达式的新手。我在这里遇到了一个问题。我使用xpaths字符串。如果元素具有id = myVar

,我想从xpath字符串中删除特定元素

示例:

/html/body/div[3]/div[20]/section[1]/p[5]/span[1][@id="var645932"]/span

如果我的变量值等于id值,我想用/span[1][@id="var645932"]/替换/var645932

我需要在javascript中执行此操作。都是字符串。我更喜欢正则表达式。如果有正则表达式专家在那里请帮助。我被困在这里是否有可能在没有正则表达式的情况下完成它?

任何帮助都非常感谢:) TIA

3 个答案:

答案 0 :(得分:1)

试试这个:

var input = '/html/body/div[3]/div[20]/section[1]/p[5]/span[1][@id="var645932"]/span';
var regex = /\w+\[\w+\]\[\@id="var645932"\]\//gi;
input = input.replace(regex, '');
console.log(input);

Example fiddle

即使HTML的结构发生变化,此正则表达式也可以正常工作,例如:

var input = '/html/body/div[3]/div[20]/section[1]/div[6][@id="var645932"]/span';

如果您需要以编程方式在正则表达式中设置id,请使用:

var regex = new RegExp('/\w+\[\w+\]\[\@id="' + id + '"\]\//', 'gi');

答案 1 :(得分:1)

您可以使用以下代码 -

var expr = '/html/body/div[3]/div[20]/section[1]/p[5]/span[1][@id="var645932"]/span';
var idVal = "var645932";
expr = expr.replace('span[1][@id="'+idVal+'"]/','');

<强> DEMO

答案 2 :(得分:0)

嗯,你可以用以下方式做到这一点

var id = "var645932";
var regx = new RegExp('/[^/]+?\\[@id="' + id + '"]/');
var str = '/html/body/div[3]/div[20]/section[1]/p[5]/span[1][@id="var645932"]/span';
console.log(str.replace(regx, "/"));
相关问题