Регулярные выражения
Проблема с регулярными выражениями.
Нужно в строке заменить число 589 на 589+1: var reg = /page=(\d+)\&url/; var arrq = "http://site.ru/index.php?page=589&url=http%3A%2F%2Fdomen.ru%2F"; alert(arrq.replace(reg, reg+1)); Почему-то переменная reg принимает такое значение "page=589&url" , а не "589", т.е. такой код: var reg = /page=(\d+)\&url/; var arrq = "http://site.ru/index.php?page=589&url=http%3A%2F%2Fdomen.ru%2F"; alert(arrq.replace(reg, 111)); выдаёт "http://site.ru/index.php?123=http%3A%2F%2Fdomen.ru%2F" а нужно "http://site.ru/index.php?page=123&url=http%3A%2F%2Fdomen.ru%2F". Помогите пожалуйста |
Нашёл решение проблемы.
var reg = /page=(\d+)\&url/; var qwer = "http://site.ru/index.php?page=589&url=http%3A%2F%2Fdomen.ru%2F"; var arrq = reg.exec(qwer); var ert = Number(arrq[1]) alert(qwer.replace(arrq[1],ert+1)); Почему предыдущий пример не работал - непонято. |
alert("http://site.ru/index.php?page=589&url=http%3A%2F%2Fdomen.ru%2F".replace(/(page=)(\d+)/, function(match, prefix, num) { return prefix + (Number(num) + 1); })); |
var reg = /page=(\d+)\&url/; var qwer = "http://site.ru/index.php?page=589&url=http%3A%2F%2Fdomen.ru%2F"; qwer = qwer.replace(reg, function(all, one){return (Number(one)||0)+1}) Почему не работало -- смотрим справочник по методам JS, к примеру на этом сайте есть неплохой: http://javascript.ru/manual |
e1f,
потеряется половина. |
Kolyaj,
блин, ступил. Так: var reg = /(page=)(\d+)(\&url)/; var qwer = "http://site.ru/index.php?page=589&url=http%3A%2F%2Fdomen.ru%2F"; qwer = qwer.replace(reg, function(all, one, two, three){return one+((Number(two)||0)+1)+three}); |
Часовой пояс GMT +3, время: 20:35. |