Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.05.2014, 12:23
Новичок на форуме
Отправить личное сообщение для Kroy Посмотреть профиль Найти все сообщения от Kroy
 
Регистрация: 21.05.2014
Сообщений: 4

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

Я решил изучить наконец то регулярные выражения и начать изучать 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]*
И все прекрасно работает.

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

Спасибо!
Ответить с цитированием
  #2 (permalink)  
Старый 21.05.2014, 12:29
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

а шаблон регулярного выражения хранишь в виде строки?
Ответить с цитированием
  #3 (permalink)  
Старый 21.05.2014, 12:30
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,492

<script>alert(/([A-Za-z 0-9-/]+)\d[wW]-\d\d/g.exec("Maslo OIL 15W-40 API CI-4/SL")[0])</script>
__________________
29375, 35
Ответить с цитированием
  #4 (permalink)  
Старый 21.05.2014, 12:46
Новичок на форуме
Отправить личное сообщение для Kroy Посмотреть профиль Найти все сообщения от Kroy
 
Регистрация: 21.05.2014
Сообщений: 4

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

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);


Ну это примерно
Ответить с цитированием
  #5 (permalink)  
Старый 21.05.2014, 12:57
Профессор
Отправить личное сообщение для jsnb Посмотреть профиль Найти все сообщения от jsnb
 
Регистрация: 15.03.2014
Сообщений: 561

Сообщение от Kroy Посмотреть сообщение
Вот такой у меня код

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");
Ответить с цитированием
  #6 (permalink)  
Старый 21.05.2014, 13:36
Профессор
Отправить личное сообщение для depp Посмотреть профиль Найти все сообщения от depp
 
Регистрация: 22.04.2014
Сообщений: 151

'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];

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

Последний раз редактировалось depp, 21.05.2014 в 13:38.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Регулярное выражение и метод test tsigel Общие вопросы Javascript 3 30.08.2013 13:47
регулярное выражение literator Ваши сайты и скрипты 1 18.08.2013 18:24
регулярное выражение leny Общие вопросы Javascript 1 24.09.2011 17:30
Регулярное выражение: любой символ, включая перевод строки Gleb Общие вопросы Javascript 3 28.07.2011 12:15
регулярное выражение theo_ Общие вопросы Javascript 15 21.06.2010 10:29