Нежадный поиск не хочет работать в 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(). В чем же дело? |
Причина в том, что первая звездочка в регексе для замены - "жадная", и она забирает "1245;"
|
ok, но почему не работает в случае без жадной звездочки?
Нежадный оператор указан явно, почему же он не работает? |
"жадность" распространяется вправо, но не влево.
т.е. эффект проявился бы в сравнении вариантов "12345;1245;".match( /1.*?3.*?5/ ) результат ["12345"] и "12345;1245;".match( /1.*?3.*5/ ) результат ["12345;1245"] |
Часовой пояс GMT +3, время: 14:13. |