Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.07.2009, 18:29
Never
 
Сообщений: n/a

Регулярные выражения
Проблема с регулярными выражениями.
Нужно в строке заменить число 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". Помогите пожалуйста
Ответить с цитированием
  #2 (permalink)  
Старый 10.07.2009, 18:44
Never
 
Сообщений: n/a

Нашёл решение проблемы.
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));


Почему предыдущий пример не работал - непонято.
Ответить с цитированием
  #3 (permalink)  
Старый 10.07.2009, 18:53
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

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);
}));
Ответить с цитированием
  #4 (permalink)  
Старый 10.07.2009, 18:54
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

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
Ответить с цитированием
  #5 (permalink)  
Старый 10.07.2009, 18:55
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

e1f,
потеряется половина.
Ответить с цитированием
  #6 (permalink)  
Старый 10.07.2009, 19:00
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

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});
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Регулярные выражения ? grusha jQuery 34 03.03.2009 22:29
Регулярные выражения вытаскивание по шаблону baal1988 Общие вопросы Javascript 27 09.10.2008 10:51
Регулярные выражения задача посложнее faunder Общие вопросы Javascript 5 15.09.2008 14:17
Регулярные выражения faunder Общие вопросы Javascript 2 15.09.2008 09:49
регулярные выражения в JS bifidokk Events/DOM/Window 2 02.06.2008 12:29