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

问题描述:

我是新来的正则表达式。我在这里得到了一个概率。我使用xpaths字符串。我想从XPath字符串删除特定元素,如果该元素具有id = myVar正则表达式来替换包含变量的字符串

例子:

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

我想更换/span[1][@id="var645932"]/只有/如果我的变量值等于值id即var645932

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

任何帮助,高度赞赏:) TIA

试试这个:

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'); 
+0

这是正是我需要的笏。但如何通过变量而不是硬编码 – Khaleel 2014-12-03 10:52:28

+0

没问题,看我的更新 – 2014-12-03 10:55:37

+0

非常感谢。但是,如果我通过它,它就不起作用。 – Khaleel 2014-12-03 11:01:18

您可以使用下面的代码 -

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

+0

cant hardcode span [1] :( – Khaleel 2014-12-03 10:52:48

+1

ok,那么你应该遵循Rory的答案,并在regEx中间连接变量,如我的答案中所示。 – 2014-12-03 10:55:13

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

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, "/")); 
+0

不工作:(。 – Khaleel 2014-12-03 10:53:17