Модераторы: ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> (Регулярка)Не получается выделить строку 
V
    Опции темы
DarkProg
  Дата 14.11.2012, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Законченный романтик
***


Профиль
Группа: Завсегдатай
Сообщений: 1784
Регистрация: 11.3.2009
Где: Земля

Репутация: нет
Всего: 19



Добрый день. Не получается написать шаблон к регулярному выражению.

Мне нужно чтобы проверялось вводимое значение по вот такой маске "римская цифра""дефис""две русские буквы"

Для римского числа я нашёл выражение в интернете, вторая часть простая как 5 копеек, в итоге у меня вот такое выражение
Код

/^M{0,3}(D?C{0,3}|C[DM])(L?X{0,3}|X[LC])(V?I{0,3}|I[VX])-[А-Я]{2}$/


У меня есть проблема при проверке. 
У меня проверку походит вот такие данные "-АР", я понимаю что дело в регулярном выражении но не могу понять как указать что первый блок обязательно должен присутствовать хотя бы 1 раз, т.е. однозначно должно быть что-то что удовлетворит вот этой части условия
Код

M{0,3}(D?C{0,3}|C[DM])(L?X{0,3}|X[LC])(V?I{0,3}|I[VX])

Не могу понять как это, я уже попробовал не один вариант, но не подходит.


--------------------
"И твоя голова всегда в ответе за то куда сядет твой зад..."

"Я студент - скажите с какого я ВУЗа..."

 smile  smile  smile 
PM MAIL   Вверх
DarkProg
Дата 14.11.2012, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Законченный романтик
***


Профиль
Группа: Завсегдатай
Сообщений: 1784
Регистрация: 11.3.2009
Где: Земля

Репутация: нет
Всего: 19



Хм, кажется после долгих мучений у меня таки получилось
Код

/^M{0,3}(D?C{0,3}|C[DM])(L?X{0,3}|X[LC])(V?I{0,3}|I[VX])\b[-][А-Я]{2}$/

Вроде бы данное выражение работает, но если я в чём-то не прав или данное выражение содержит какие-то подводные камни, я надеюсь что меня поправят/направят в нужном направлении.


--------------------
"И твоя голова всегда в ответе за то куда сядет твой зад..."

"Я студент - скажите с какого я ВУЗа..."

 smile  smile  smile 
PM MAIL   Вверх
Pfailed
Дата 14.11.2012, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 933
Регистрация: 19.7.2009

Репутация: 6
Всего: 39



По логике должна подойти ретроспективная проверка
Код

/^ 
M{0,3}(D?C{0,3}|C[DM])(L?X{0,3}|X[LC])(V?I{0,3}|I[VX]) # римское число
(?<=.) # слева должна быть хоть одна буква, если там начало строки -  fail
-[А-Я]{2} # две русские буквы
$
/x


Добавлено через 8 минут и 9 секунд
С \b действительно тоже работает, \b - граница слова, и, видимо, требует, чтобы хотя бы с одной стороны от нее было слово.
А в случаи неудачи у нас с одной стороны начало строки, с друго дефис.


--------------------
PM MAIL   Вверх
DarkProg
Дата 14.11.2012, 20:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Законченный романтик
***


Профиль
Группа: Завсегдатай
Сообщений: 1784
Регистрация: 11.3.2009
Где: Земля

Репутация: нет
Всего: 19



Цитата(Pfailed @  14.11.2012,  19:11 Найти цитируемый пост)
По логике должна подойти ретроспективная проверка

Я читал-читал, так и не понял как её применить :( Но спасибо, что показали.


--------------------
"И твоя голова всегда в ответе за то куда сядет твой зад..."

"Я студент - скажите с какого я ВУЗа..."

 smile  smile  smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Регулярные выражения | Следующая тема »


 




[ Время генерации скрипта: 0.0398 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.