2016-10-26 2 views
1

ОК, поэтому я проверил около 4 разных SO-вопросов, и никто не дал мне ответа. :(jQuery Regex не подбирает

Веб-сайт, на котором я работаю, содержит несколько сотен страниц, но, к сожалению, структура тегов в URL-адресе изменилась. Угадайте, что страницы жестко закодированы текстом и ссылками (FML) в любом случае быстро исправить сейчас было бы получить запрос, чтобы изменить все эти ссылки

Я решил попробовать использовать это:.

$(document).ready(function() { 
$('a').each(function() { 

    var str2 = "tag="; 
    var link = $(this).attr('href'); 
    if(link.indexOf(str2) != -1){ 

     var link = link.replace("/tag=.*/","tag/$1"); 
     $(this).attr('href', link); 
    } 
}); 

}) 

что мне нужно, чтобы получить значение «HREF» сканирования для «тега = ecommerce 'или' tag = b2b 'и т. д. и изменить структуру на «tag/eccommerce» или «tag/b2b»

Однако он просто не работает.

Что мне не хватает?

+0

я не знаю, регулярное выражение хорошо, но заполнители могут быть заполнены только с кронштейнами я думаю. поэтому, пожалуйста, попробуйте "/tag=(.*)/" – Chris

+0

nope, попробовал это:/ – JamesG

+0

получил: replace ("tag =", "tag /"). Это не регулярное выражение, чтобы выбрать что-то из строки. это что-то заменить. поэтому вам не нужно настоящее регулярное выражение, вместо этого вам нужна только строка, которую вы хотите заменить в своей ссылке другой строкой. – Chris

ответ

1

Вам необходимо использовать синтаксис regex /YourRegex/ вместо "/YourRegex/". И использовать группу захвата, как так:

$(document).ready(function() { 
 
$('a').each(function() { 
 

 
    var str2 = "tag="; 
 
    var link = $(this).attr('href'); 
 
    if(link.indexOf(str2) != -1){ 
 

 
     var link = link.replace(/tag=(.*)/,"tag/$1"); 
 
     $(this).attr('href', link); 
 
    } 
 
}); 
 

 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script> 
 
<a href="www.foo.com/tag=MyTag">MyLink</a>

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