Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   RegExp - поиск в найденном. Не могу понять (https://javascript.ru/forum/misc/12422-regexp-poisk-v-najjdennom-ne-mogu-ponyat.html)

senseysensor 16.10.2010 22:36

RegExp - поиск в найденном. Не могу понять
 
Здравствуйте!
что-то не могу понять, как в регулярных выражениях описать поиск в найденном.
Ну то есть имеется URL с GET-запросом, нужно найти (заменить) одну переменную. Можно, конечно, сделать в несколько действий. Но интереснее описать всё за 1 раз.

Вот пишу что-то вроде:
find_var = /(\?.*$)id=[\d]+\1/

То есть внутри URL сначала выделяю весь GET запрос, а потом пытаюсь найти в этом [найденном] запросе найти переменную ID. Что неправильно?

Gvozd 17.10.2010 01:24

Цитата:

Сообщение от senseysensor
$

это что такое?
зачем вы это вставили в свой регексп?!
если случайно опечаталсиьь, то какого фига задаете вопрос на форуме не проверив свой код на опечатки?

senseysensor 17.10.2010 03:09

Не кипятись. :)

Видимо я что-то недопонял.
В справочнике (http://javascript.ru/RegExp) написано по поводу знака доллара вот что:
Код:

$ Обозначает конец входных данных.
Если установлен флаг многострочного поиска, то также сработает в конце строки.
Например, /t$/ не найдет 't' в "eater", но найдет - в "eat".

Таким образом я хотел найти часть url от знака вопроса до самого конца.
Что в этом неправильного??

ps - данные для обработки я получаю при помощи location.href

Gvozd 17.10.2010 04:04

Цитата:

Сообщение от senseysensor
В справочнике (http://javascript.ru/RegExp) написано по поводу знака доллара вот что:

спасибо
я в курсе в отличии от вас, для чего знак доллара применяется
я вас спраишвиваю что он делает в вашем выражении.
или иными словами, скжите:что по повашемму сделает это выражение????
а ничего гноно не сщддаелат

Riim 17.10.2010 06:50

Цитата:

Сообщение от senseysensor
от знака вопроса до самого конца

так все, конец уже, а ты после конца еще что-то ищешь, но там нет ничего.

Цитата:

Сообщение от senseysensor
\1

я, кажется, понял, как ты мыслишь, и теперь тоже такую траву хочу). Вот те ссылка: http://realcode.ru/regexptester/ .

senseysensor 17.10.2010 16:33

Млин мужики ну неужели так сложно ответить :( вы все профи, а я ламер, я понимаю, но всё же...
Кажется я как нельзя проще обозначил задачу - поиск в найденном, описанный в пределах одного выражения.

можно ли так сделать?
Пожалуйста, если можно, то напишите рабочий вариант - я действительно не могу врубиться, как правильно записать!!!

ps
алгоритм я себе представляю такой:
1. Найти часть URL от знака вопроса до конца строки.
2. В резульате предыдущего поиска найти искомое выражение (в моём случае это id=24).

Я не могу понять, как использовать сивол
(backslash)n
---
Цитата:

Обратная ссылка на n-ю запомненную скобками подстроку

monolithed 17.10.2010 17:33

В вашем случае:
<script type="text/javascript">
alert(window.location.search.replace(/\?id=(\w)/, '$1'));  //выведет все что после "?id="
</script>


Искусственный пример:
<script type="text/javascript">
var str = window.location.search +'?id=Procter%20%26%20Gamble'; //в адресную строку искусственно добавлен параметр
var reg = decodeURIComponent(str).replace(/[?&]id=(\d+)/, '$1'); //+декодируем полученные данные
alert(reg)
</script>

Riim 17.10.2010 19:14

Цитата:

Сообщение от monolithed
\?

\? => [?&]

Kolyaj 17.10.2010 19:49

Цитата:

Сообщение от senseysensor
алгоритм я себе представляю такой:
1. Найти часть URL от знака вопроса до конца строки.
2. В резульате предыдущего поиска найти искомое выражение (в моём случае это id=24).

Неправильно. Надо
1. Найти знак вопроса.
2. После знака вопроса пропустить любое количество символов до id=
3. Взять текст после id=
/\?.*?id=(\d+)/
Это применительно к гипотетической строке в вакууме.

Применительно к url
/[?&]id=(\d+)/

senseysensor 17.10.2010 21:55

Ясно, спасибо всем за помощь


Часовой пояс GMT +3, время: 01:43.