Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.08.2013, 21:01
Профессор
Отправить личное сообщение для Почемучкин Посмотреть профиль Найти все сообщения от Почемучкин
 
Регистрация: 11.05.2011
Сообщений: 241

Нежадный поиск не хочет работать в String.match()
Почему в match не хочет работать нежадная директива типа .*? или .+?
Смотрите:

alert( "1245;12345".match( /1.*?3.*?5/ )  )

результат:   ["1245;12345"]

alert( "1245;12345".match( /(1.*?3.*?5)/ )  )

результат:   ["1245;12345", "1245;12345"]

alert( "1245;12345".replace( /^.*(1.*?3.*?5).*$/, "$1" )  )

результат:   "12345" (правильно)

А от match() ведь ожидалось то, что выдает replace()

То есть нежадный оператор работает в replace(), но не работает в match(). В чем же дело?
Ответить с цитированием
  #2 (permalink)  
Старый 23.08.2013, 21:50
Профессор
Отправить личное сообщение для Яростный Меч Посмотреть профиль Найти все сообщения от Яростный Меч
 
Регистрация: 12.04.2010
Сообщений: 557

Причина в том, что первая звездочка в регексе для замены - "жадная", и она забирает "1245;"
Ответить с цитированием
  #3 (permalink)  
Старый 23.08.2013, 22:02
Профессор
Отправить личное сообщение для Почемучкин Посмотреть профиль Найти все сообщения от Почемучкин
 
Регистрация: 11.05.2011
Сообщений: 241

ok, но почему не работает в случае без жадной звездочки?
Нежадный оператор указан явно, почему же он не работает?
Ответить с цитированием
  #4 (permalink)  
Старый 23.08.2013, 22:15
Профессор
Отправить личное сообщение для Яростный Меч Посмотреть профиль Найти все сообщения от Яростный Меч
 
Регистрация: 12.04.2010
Сообщений: 557

"жадность" распространяется вправо, но не влево.

т.е. эффект проявился бы в сравнении вариантов

"12345;1245;".match( /1.*?3.*?5/ )

результат ["12345"]

и

"12345;1245;".match( /1.*?3.*5/ )

результат ["12345;1245"]
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
НЕЖАДНЫЙ ПОИСК ID ПО СТРАНИЦЕ Brook Events/DOM/Window 5 25.11.2012 16:33
Перебор дерева элементов - не хочет работать скрипт... caca0 Javascript под браузер 7 18.05.2012 20:07
Скрипт не хочет работать как надо в Хроме AlexZ Javascript под браузер 1 11.05.2012 11:34
не хочет работать слайдер картинок на сайте MadStill Общие вопросы Javascript 0 29.03.2011 14:55
Сломал всю голову.. Посмотрите спецы.. Не хочет работать страница в mozilla-firefox.. ProniK Ваши сайты и скрипты 1 02.06.2010 19:33