Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Не срабатывает регулярное выражение (https://javascript.ru/forum/misc/47375-ne-srabatyvaet-regulyarnoe-vyrazhenie.html)

Kroy 21.05.2014 12:23

Не срабатывает регулярное выражение
 
Добрый день!

Я решил изучить наконец то регулярные выражения и начать изучать JavaScript

Эксперимент такой

Есть строка с длинным названием масла для автомобиля

например

Maslo OIL 15W-40 API CI-4/SL

Я хочу выделять строку до вязкости масла, то есть до 15W-40

C помощью сервиса регвыражений я строю такое выражение
([A-Za-z 0-9-/]+)\d[wW]-\d\d
Начинаю включать его в проект и оно не срабатывает.

Я начинаю поочередно включать/отключать компоненты выражения и понимаю что оно перестает работать на использовании символа \d

Я меняю выражение на
([A-Za-z 0-9-/]+)[0-9][wW]-[0-9]*
И все прекрасно работает.

Вопрос - в чем ошибка первого выражения?

Спасибо!

Octane 21.05.2014 12:29

а шаблон регулярного выражения хранишь в виде строки?

Aetae 21.05.2014 12:30

<script>alert(/([A-Za-z 0-9-/]+)\d[wW]-\d\d/g.exec("Maslo OIL 15W-40 API CI-4/SL")[0])</script>

Kroy 21.05.2014 12:46

Вот такой у меня код

re=new RegExp ("([A-Za-z 0-9-/]+)\d[wW]-\d\d", "g");

str="Maslo OIL 15W-40 API CI-4/SL";

result=str.match(re);


Ну это примерно:)

jsnb 21.05.2014 12:57

Цитата:

Сообщение от Kroy (Сообщение 312750)
Вот такой у меня код

re=new RegExp ("([A-Za-z 0-9-/]+)\d[wW]-\d\d", "g");

str="Maslo OIL 15W-40 API CI-4/SL";

result=str.match(re);


Ну это примерно:)

При содании регулярки через new RegExp обратные слеши надо экранировать:
re=new RegExp ("([A-Za-z 0-9-/]+)\\d[wW]-\\d\\d", "g");

depp 21.05.2014 13:36

'Maslo OIL 15W-40 API CI-4/SL'.match(/^(.*)\s\d+[wW]-\d+/)[1];

или
'Maslo OIL 15W-40 API CI-4/SL'.match(/^(.*)\s\d+[wW]-\d+/)[0];

смотря что именно надо.


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