Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.07.2019, 00:51
Интересующийся
Отправить личное сообщение для abadon Посмотреть профиль Найти все сообщения от abadon
 
Регистрация: 25.02.2019
Сообщений: 14

регулярные выражения
Здравствуйте, я ни как не могу разобраться с выражениями, в общем мне надо найти ссылку в коде и заменить некоторые элементы в ней, я нашел некоторый материал ознакомился и сделал для поиска вот такое выражение
Код:
/<a.+href=('|")\/\?(&|)(\w+(=|)(.+|))('|")>/g
но вот эта часть может повторятся
Код:
(&|)(\w+(=|)(.+|))
вот пример ссылки которую надо найти
Код:
<a class='small minor' href='/?chat=$chat[id]&del_komm=$post[id]'>
и мне нужно заменить символы "&" на "-" и символ "=" на "-" и удалить знак "?"
но про замену вообще не чего не нашел в гугле, хотя я слышал что как то можно вытаскивать части текста и вставлять,
в итоге должна быть ссылка такого вида
Код:
<a class='small minor' href='/chat-$chat[id]/del_komm-$post[id]'>
Подскажите как это можно сделать и где мне вообще найти информацию про замену так как ее вообще нет ни где
Ответить с цитированием
  #2 (permalink)  
Старый 05.07.2019, 01:11
Интересующийся
Отправить личное сообщение для abadon Посмотреть профиль Найти все сообщения от abadon
 
Регистрация: 25.02.2019
Сообщений: 14

я вот знаю что повторение обозначается так {.+} одно или более но оно не работает я пробовал так
/<a.+href=('|")\/\?((&|)(\w+(=|)(.+|))){.+}('|")>/g

в ссылке же может быть много переменных
/?val=1&name=zuko&num=142
и так как я не знаю сколько значений то нужно повторять и сделать новую ссылку
Ответить с цитированием
  #3 (permalink)  
Старый 05.07.2019, 01:23
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 32,192

abadon,
<body>


<script>
  let str = "<a class='small minor' href='/?chat=$chat[id]&del_komm=$post[id]'>"
  str = str.replace(/(<a.+href=['"])([^"']+)/g, function(a,b,c) {
  return b + c.replace("?","").replace(/[=&]/g, "-")
})
document.body.append(str)
</script>


</body>

Последний раз редактировалось рони, 05.07.2019 в 01:25.
Ответить с цитированием
  #4 (permalink)  
Старый 05.07.2019, 02:40
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

abadon, может не нужно при помощи регулярных выражении, если есть элементы!

<a class="small minor" href="/?chat=$chat[id]&del_komm=$post[id]"></a>
<a class="small minor" href="/?val=1&name=zuko&num=142"></a>

<!-- Для примера, чтобы было видно заменённые адреса ссылок -->
<style>a::before { content: attr(href); display: list-item; }</style>

<script>

function cleanLink(link) {
	var url = new URL(link.href, location);
	var path = Array.from(url.searchParams, ([...pair]) => pair.join("-")).join("/");
	url.search = "";
	url.pathname += path;
	link.href = url.href.replace(location.origin, "");
	return link;
}

for(const link of document.querySelectorAll("a.small.minor")) {
	cleanLink(link);
}

</script>
Ответить с цитированием
  #5 (permalink)  
Старый 05.07.2019, 11:03
Интересующийся
Отправить личное сообщение для abadon Посмотреть профиль Найти все сообщения от abadon
 
Регистрация: 25.02.2019
Сообщений: 14

Спасибо, мне именно регулярные выражения нужны были так как я их не понимаю и хочу их выучить.
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
регулярные выражения Gtfuc Общие вопросы Javascript 9 16.11.2017 20:16
регулярные выражения remember_me Общие вопросы Javascript 2 26.12.2013 12:56
Составить регулярные выражения ($) Zero Tolerance Общие вопросы Javascript 10 19.11.2013 11:14
Регулярные выражения для javascript qwert_ukg Общие вопросы Javascript 3 20.04.2012 12:45
нежадные регулярные выражения KOLANICH Общие вопросы Javascript 2 12.12.2010 00:08