Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Почему игнорируются границы слова? (https://javascript.ru/forum/misc/30256-pochemu-ignoriruyutsya-granicy-slova.html)

dump 29.07.2012 11:57

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

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

Почему он выводит 1, а не 2?

nerv_ 29.07.2012 12:09

потому, что .+ съедает все
alert( ' dump dump '.match(/\b.+\b/) );

dump 29.07.2012 15:42

Цитата:

Сообщение от nerv_ (Сообщение 192648)
потому, что .+ съедает все
alert( ' dump dump '.match(/\b.+\b/) );

Хорошо, но тогда если написать

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

то получаются три элемента, вторым будет пробел. Почему? Ведь пробел не вписывается в регулярное выражение?

oneguy 29.07.2012 15:59

Цитата:

Сообщение от dump
Почему? Ведь пробел не вписывается в регулярное выражение?

Вписывается. Точка в регулярке означает любой символ, кроме переноса строки.

Dim@ 29.07.2012 16:44

dump,
oneguy верно говорит
Цитата:

Сообщение от Учебник
. - любой символ, кроме перевода строки или любого другого разделителя строки Unicode.

надо использовать \S
Цитата:

Сообщение от Учебник
\S - любой символ, не являющийся символом-разделителем Unicode.


dump 29.07.2012 17:05

Да, сам по себе пробел вписывается, но ведь в регулярном выражении по бокам границы слова \b. А по пробела по бокам буквы...

oneguy 29.07.2012 18:02

Цитата:

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

В строке " dump dump " 2 слова и 4 границы слова, каждое слово имеет 2 границы.


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