регулярные выражения
Здравствуйте, я ни как не могу разобраться с выражениями, в общем мне надо найти ссылку в коде и заменить некоторые элементы в ней, я нашел некоторый материал ознакомился и сделал для поиска вот такое выражение
Код:
/<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]'> |
я вот знаю что повторение обозначается так {.+} одно или более но оно не работает я пробовал так
/<a.+href=('|")\/\?((&|)(\w+(=|)(.+|))){.+}('|")>/g в ссылке же может быть много переменных /?val=1&name=zuko&num=142 и так как я не знаю сколько значений то нужно повторять и сделать новую ссылку |
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> |
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> |
Спасибо, мне именно регулярные выражения нужны были так как я их не понимаю и хочу их выучить.
|
Часовой пояс GMT +3, время: 03:08. |