2014-12-03 178 views
0

我是新來的正則表達式。我在這裏得到了一個概率。我使用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

回答

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

這是正是我需要的笏。但如何通過變量而不是硬編碼 – Khaleel 2014-12-03 10:52:28

+0

沒問題,看我的更新 – 2014-12-03 10:55:37

+0

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

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

+0

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

+1

ok,那麼你應該遵循Rory的答案,並在regEx中間連接變量,如我的答案中所示。 – 2014-12-03 10:55:13

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

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