Russian Qt Forum
Ноябрь 25, 2024, 17:26 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Вопрос по регулярным выражениям (QRegExp)  (Прочитано 10522 раз)
OS2
Самовар
**
Offline Offline

Сообщений: 186



Просмотр профиля WWW
« : Май 06, 2009, 10:46 »

Всем доброго времени суток!
Знатоки, помогите написать регулярное выражение, для заполнения QLineEdit'а RGB значениями вида: 255,255,255
тоесть, чтобы была возможность ввода значений от 0, до 255 и разделенных между собой запятыми.
Всем заранее спасибо!
Записан
spirit
Гость
« Ответ #1 : Май 06, 2009, 10:58 »

по идее так [0-9]{1,3},[0-9]{1,3},[0-9]{1,3}.
правда тут маленькая лажа: если вводить нули в одну из секций, то их можно ввести 3 штуки. Улыбающийся
« Последнее редактирование: Май 06, 2009, 11:00 от spirit » Записан
OS2
Самовар
**
Offline Offline

Сообщений: 186



Просмотр профиля WWW
« Ответ #2 : Май 06, 2009, 11:04 »

Нет, такое не подходит, потому что позволяет вводить значения > 255.
Сейчас я использую такое: \\b(([012]?\\d?\\d|2[0-4]\\d|25[0-5])\\,){2}([012]?\\d?\\d|2[0-4]\\d|25[0-5])\\b
но оно тоже разрешает ввод > 255, хотя и ограничено 299.  Злой
Записан
spirit
Гость
« Ответ #3 : Май 06, 2009, 11:06 »

да, точно, я протупил.  Улыбающийся
Записан
Rcus
Гость
« Ответ #4 : Май 06, 2009, 11:23 »

Цитата: xkcd
Всем стоять! Я знаю регулярные выражения!

^([0-9]|[1-9][0-9]|1(?:[0-9]){2}|2[0-4][0-9]|25[0-5]),([0-9]|[1-9][0-9]|1(?:[0-9]){2}|2[0-4][0-9]|25[0-5]),([0-9]|[1-9][0-9]|1(?:[0-9]){2}|2[0-4][0-9]|25[0-5])$

Если это выражение для QRegExpValidator, то не проще ли нормальный валидатор написать?
Записан
Admin
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1988



Просмотр профиля
« Ответ #5 : Май 06, 2009, 11:39 »

эээ
а у меня кажись попроще получилось  Смеющийся

Цитировать
(\d+),(\d+),(\d+)

аа не то, вот то:

Цитировать
(\d{1,3}),(\d{1,3}),(\d{1,3})
« Последнее редактирование: Май 06, 2009, 11:45 от Admin » Записан
spirit
Гость
« Ответ #6 : Май 06, 2009, 11:41 »

эээ
а у меня кажись попроще получилось  Смеющийся

Цитировать
(\d+),(\d+),(\d+)
не, значения > 255 будут допускаться, да и к тому же в любую из триад можно ввести любое количество символов, а вот regexp Rcus'a работает как надо.
« Последнее редактирование: Май 06, 2009, 11:43 от spirit » Записан
OS2
Самовар
**
Offline Offline

Сообщений: 186



Просмотр профиля WWW
« Ответ #7 : Май 06, 2009, 11:41 »

Спасибо Rcus такое выражение очень даже подходит.  Веселый
Вот только возник вопрос, если в QLineEdit, к которому применино это регулярное выражение, введено например: 0,0,0
то, невозможно стереть 0, чтобы заменить его на любую другую цифру, приходится либо выделять этот 0 и вводить другое значение, либо писать рядом с 0 цифру и после этого удалять сам 0. Можно это как нибудь побороть?

ЗЫ:
Цитировать
Если это выражение для QRegExpValidator, то не проще ли нормальный валидатор написать?
именно для него, но с валидаторами я не знаком, а написать надо всего одну строку....  Грустный
Записан
Admin
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1988



Просмотр профиля
« Ответ #8 : Май 06, 2009, 11:45 »

аа не то, вот то:

Цитировать
(\d{1,3}),(\d{1,3}),(\d{1,3})

Записан
OS2
Самовар
**
Offline Offline

Сообщений: 186



Просмотр профиля WWW
« Ответ #9 : Май 06, 2009, 11:50 »

Цитировать
аа не то, вот то:
Позволяет вводить значения > 255
Записан
spirit
Гость
« Ответ #10 : Май 06, 2009, 11:52 »

аа не то, вот то:

Цитировать
(\d{1,3}),(\d{1,3}),(\d{1,3})


тоже самое что и я написал Улыбающийся кроче, не катит  Смеющийся
Записан
Admin
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1988



Просмотр профиля
« Ответ #11 : Май 06, 2009, 11:58 »

да не катит
нету в регекспах <> для int
Записан
OS2
Самовар
**
Offline Offline

Сообщений: 186



Просмотр профиля WWW
« Ответ #12 : Май 06, 2009, 20:02 »

А по этому поводу не у кого мыслей нету:
Цитировать
Вот только возник вопрос, если в QLineEdit, к которому применино это регулярное выражение, введено например: 0,0,0
то, невозможно стереть 0, чтобы заменить его на любую другую цифру, приходится либо выделять этот 0 и вводить другое значение, либо писать рядом с 0 цифру и после этого удалять сам 0. Можно это как нибудь побороть?
Записан
Rcus
Гость
« Ответ #13 : Май 06, 2009, 20:11 »

Валидатор написать.
Записан
OS2
Самовар
**
Offline Offline

Сообщений: 186



Просмотр профиля WWW
« Ответ #14 : Май 06, 2009, 20:24 »

Валидатор написать.
А по подробней....  Строит глазки  Строит глазки  Строит глазки
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.146 секунд. Запросов: 22.