регулярные выражения
Здравствуйте, я ни как не могу разобраться с выражениями, в общем мне надо найти ссылку в коде и заменить некоторые элементы в ней, я нашел некоторый материал ознакомился и сделал для поиска вот такое выражение
Код:
/<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, время: 06:13. |