我是正则表达式的新手。我在这里遇到了一个问题。我使用xpaths字符串。如果元素具有id = myVar
示例:
/html/body/div[3]/div[20]/section[1]/p[5]/span[1][@id="var645932"]/span
如果我的变量值等于id值,我想用/span[1][@id="var645932"]/
替换/
,var645932
我需要在javascript中执行此操作。都是字符串。我更喜欢正则表达式。如果有正则表达式专家在那里请帮助。我被困在这里是否有可能在没有正则表达式的情况下完成它?
任何帮助都非常感谢:) TIA
答案 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);
即使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, "/"));