Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 29.07.2012, 11:57
Интересующийся
Отправить личное сообщение для dump Посмотреть профиль Найти все сообщения от dump
 
Регистрация: 14.07.2011
Сообщений: 26

Почему игнорируются границы слова?
Вот код:

alert(' dump dump '.match(/\b.+\b/gm).length);

Почему он выводит 1, а не 2?
Ответить с цитированием
  #2 (permalink)  
Старый 29.07.2012, 12:09
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

потому, что .+ съедает все
alert( ' dump dump '.match(/\b.+\b/) );
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #3 (permalink)  
Старый 29.07.2012, 15:42
Интересующийся
Отправить личное сообщение для dump Посмотреть профиль Найти все сообщения от dump
 
Регистрация: 14.07.2011
Сообщений: 26

Сообщение от nerv_ Посмотреть сообщение
потому, что .+ съедает все
alert( ' dump dump '.match(/\b.+\b/) );
Хорошо, но тогда если написать

alert(' dump dump '.match(/\b.+?\b/gm));

то получаются три элемента, вторым будет пробел. Почему? Ведь пробел не вписывается в регулярное выражение?
Ответить с цитированием
  #4 (permalink)  
Старый 29.07.2012, 15:59
Профессор
Отправить личное сообщение для oneguy Посмотреть профиль Найти все сообщения от oneguy
 
Регистрация: 31.05.2012
Сообщений: 396

Сообщение от dump
Почему? Ведь пробел не вписывается в регулярное выражение?
Вписывается. Точка в регулярке означает любой символ, кроме переноса строки.
Ответить с цитированием
  #5 (permalink)  
Старый 29.07.2012, 16:44
Аватар для Dim@
Профессор
Отправить личное сообщение для Dim@ Посмотреть профиль Найти все сообщения от Dim@
 
Регистрация: 21.04.2012
Сообщений: 951

dump,
oneguy верно говорит
Сообщение от Учебник
. - любой символ, кроме перевода строки или любого другого разделителя строки Unicode.
надо использовать \S
Сообщение от Учебник
\S - любой символ, не являющийся символом-разделителем Unicode.
Ответить с цитированием
  #6 (permalink)  
Старый 29.07.2012, 17:05
Интересующийся
Отправить личное сообщение для dump Посмотреть профиль Найти все сообщения от dump
 
Регистрация: 14.07.2011
Сообщений: 26

Да, сам по себе пробел вписывается, но ведь в регулярном выражении по бокам границы слова \b. А по пробела по бокам буквы...
Ответить с цитированием
  #7 (permalink)  
Старый 29.07.2012, 18:02
Профессор
Отправить личное сообщение для oneguy Посмотреть профиль Найти все сообщения от oneguy
 
Регистрация: 31.05.2012
Сообщений: 396

Сообщение от dump
Да, сам по себе пробел вписывается, но ведь в регулярном выражении по бокам границы слова \b. А по пробела по бокам буквы...
В строке " dump dump " 2 слова и 4 границы слова, каждое слово имеет 2 границы.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему некоторые операторы возвращают значения, а не ссылки? dump Общие вопросы Javascript 15 25.07.2012 17:28
не работает скрипт по изменению регстра первой буквы слова Huruffus Общие вопросы Javascript 3 02.06.2012 20:50
Регулярные выражения. Почему находи именно так? jsuse Общие вопросы Javascript 4 21.11.2011 16:37
Свойства объекта, методы и this. Почему свойство вызывается с () ? jsuse Общие вопросы Javascript 2 04.11.2011 20:39
Почему не определяется втарая переменная? Арман Общие вопросы Javascript 3 09.04.2011 11:14