Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Ни дня без регулярки (https://javascript.ru/forum/misc/71287-ni-dnya-bez-regulyarki.html)

рони 09.11.2017 12:42

:)
var str = 'xyz - Learn x in - y';
str = str.match(/(.*?)(?: - )(.*)/).slice(1);
alert(JSON.stringify(str));

Rasy 09.11.2017 14:37

рони,
А зачем в группировке экранирован дефис? Он ведь не имеет специальное значение.

рони 09.11.2017 15:00

Rasy,
убрал :)

Alexandroppolus 09.11.2017 15:02

"(?:" и ")" там тоже нафиг не надо :) бесполезная группировка-то

Rasy 09.11.2017 15:11

Цитата:

Сообщение от Alexandroppolus
"(?:" и ")" там тоже нафиг не надо бесполезная группировка-то

Почему? Не жадное повторение, и в поиске пробел и первый дефис мне не нужны:)

рони 09.11.2017 15:13

Цитата:

Сообщение от Alexandroppolus
бесполезная группировка-то

можно код?

Alexandroppolus 09.11.2017 15:16

var str = 'xyz - Learn x in - y';
str = str.match(/(.*?) - (.*)/).slice(1);
alert(JSON.stringify(str));


всё то же самое, только убрал группировку вокруг " - "

Rasy 09.11.2017 15:22

Alexandroppolus,
Классно! Получается " - " более краткая и точная альтернатива классу символов (?:[\s-]), в нашем случае.

рони 09.11.2017 15:23

Alexandroppolus,
спасибо!

Alexandroppolus 09.11.2017 15:28

Rasy,
более точная
как правильнее - зависит от задачи.
/ - / - это если надо строго "тире между пробелами"
/\s-\s/ - тире между любыми "пробельными символами"
/[\s-]+/ - произвольная подстрока из "пробельных символов" и тире


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