2014-12-03 6 views
0

Я новичок в регулярном выражении. У меня здесь есть проблема. Я работаю со строками xpaths. Я хочу, чтобы удалить какой-либо элемент из XPATH строки, если элемент имеет id = myVarRegex заменить строку, содержащую переменную

Пример:

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

Я хочу, чтобы заменить /span[1][@id="var645932"]/ с только / если мое переменным значением равно значение идентификатора т.е. var645932

Мне нужно сделать это в javascript. все строки. Я предпочитаю регулярное выражение. если есть какие-либо специалисты по регулярному выражению, просьба помочь. Я застрял здесь. возможно ли это выполнить без регулярного выражения?

Любая помощь высоко ценится :) ТИА

ответ

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

это точно ват, в котором я нуждался. Но как передать переменную вместо hardcoding – Khaleel

+0

Нет проблем, см. Мое обновление –

+0

Большое спасибо. Но он не работает, если я его передаю. – Khaleel

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

+1

ok, тогда вы должны следовать ответу Рори и объединить переменную в середине regEx, как показано в моем ответе. –

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

Смежные вопросы