Вход

Просмотр полной версии : Помогите с регуляркой


bms.java
08.06.2017, 10:36
Есть малюсенький скрипт:
Array.prototype.forEach.call(document.querySelecto rAll('a'), function(e){
if(e.href == 'ссылка на сайт')
e.href = 'заменнёная ссылка';
});
Помогите добавить регулярку для поиска определенной ссылки (только начало) . Например все ссылки начинающиеся с vk.com/away.php
С регулярками вообще не дружу. Заранее спасибо

ksa
08.06.2017, 10:51
Например все ссылки начинающиеся с
Как вариант...

var url='vk.com\/away.php?prm=123';
alert(/^vk.com\/away.php/.test(url));


Но ссылки на странице не будут такими, если ты указываешь их сокращенным синтаксисом... ;)

bms.java
08.06.2017, 11:08
Разобрался, код получился такой:
Array.prototype.forEach.call(document.querySelecto rAll('a'), function(e){
if(e.href == (/^https:\/\/vk.com\/away.php/i) || (/^https:\/\/an.yandex.ru/i))
e.href = 'Sponsorship';
});
Спасибо ksa за помощь

laimas
08.06.2017, 11:14
bms.java,
для такого поиска рег. выражения в общем то и не нужны. Смотрите свойства location (https://developer.mozilla.org/ru/docs/Web/API/Location).

ruslan_mart
08.06.2017, 11:50
bms.java, Вы уверены, что Ваш код работает? :)

Да и тут регулярки не нужны.

Array.prototype.forEach.call(document.links, function(link) {
if(link.href.indexOf('https://vk.com') === 0 || link.href.indexOf('https://an.yandex.ru') === 0) {
link.href = 'Sponsorship';
}
});


Но можно куда проще и логичней поступить:

Array.prototype.forEach.call(document.links, function(link) {
if(link.hostname === 'vk.com' || link.hostname === 'an.yandex.ru')
link.href = 'Sponsorship';
}
});

bms.java
08.06.2017, 12:06
Действительно работало неверно. Спасибо за помощь