正则表达式来替换包含变量的字符串
我是新来的正则表达式。我在这里得到了一个概率。我使用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);
此正则表达式的设计工作,即使的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');
您可以使用下面的代码 -
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+'"]/','');
cant hardcode span [1] :( – Khaleel 2014-12-03 10:52:48
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, "/"));
不工作:(。 – Khaleel 2014-12-03 10:53:17
这是正是我需要的笏。但如何通过变量而不是硬编码 – Khaleel 2014-12-03 10:52:28
没问题,看我的更新 – 2014-12-03 10:55:37
非常感谢。但是,如果我通过它,它就不起作用。 – Khaleel 2014-12-03 11:01:18