Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   регулярки: замена ссылки на ютуб (https://javascript.ru/forum/misc/30183-regulyarki-zamena-ssylki-na-yutub.html)

oneguy 31.07.2012 22:53

Цитата:

Сообщение от Dim@ (Сообщение 193390)
oneguy,
интересно мне почему он ищет кратное n, а не общее наибольшое n?:blink:

Извините, не совсем понял что такое общее наибольшое n.

nerv_ 31.07.2012 23:08

Цитата:

Сообщение от oneguy
(.+) // ловит несколько звёдочек (допустим, n)

ничего подобного. Жрет всю строку

/
  (.+)  // пытается сожрать всю строку, но
  (?=\1* // опережающая проверка отменяет совпадение, если условие, следующее далее не является истинным. С того же места, где была захвачена подстрока (.+) начинается первая проверка обратной ссылки - 0 или более символов,
  , // далее обязательная запятая и
  \1+ // вторая проверка обратной ссылки - 1 или более символов
  $ //конец входящей строки
/


Цитата:

Сообщение от Hekumok
это значит - получаем символы (кроме пробела)

включая пробел

Hekumok 31.07.2012 23:14

Цитата:

Сообщение от nerv_ (Сообщение 193414)
ничего подобного. Жрет всю строку

Нет, именно пытается это сделать, как вы написали ниже

melky 31.07.2012 23:44

Цитата:

Сообщение от nerv_
начинается первая проверка обратной ссылки - 0 или более символов,

количество повторений строки от нуля, включая.

Цитата:

Сообщение от nerv_
вторая проверка обратной ссылки - 1 или более символов

опять таки, 1 и более повторений захваченной строки.

вообще, я этой реги сам боюсь)

вот её обьяснение, от создателя :


/
  (.+)  // хавает какую-то строку.
  (?=\1* // далее она повторяется несколько раз, или не повторяется вообще.
  ,
  \1+ // <----- тут эта схаванная строка повторяется хотя бы один (!) раз, самое главное - без остатка (конец строки)
  $ //   <-----|
/

oneguy 01.08.2012 02:36

Кстати, если это интересно, идею для этой задачи я увидел в спецификации: http://es5.javascript.ru/x15.10.html#x15.10.2.5, см. ПРИМЕЧАНИЕ 2, конец.

Hekumok 01.08.2012 10:48

Цитата:

Сообщение от nerv_ (Сообщение 193414)
включая пробел

Ой, да, пардон, перепутал - переносы строк


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