Название: Вопрос по регулярным выражениям (QRegExp) Отправлено: OS2 от Май 06, 2009, 10:46 Всем доброго времени суток!
Знатоки, помогите написать регулярное выражение, для заполнения QLineEdit'а RGB значениями вида: 255,255,255 тоесть, чтобы была возможность ввода значений от 0, до 255 и разделенных между собой запятыми. Всем заранее спасибо! Название: Re: Вопрос по регулярным выражениям (QRegExp) Отправлено: spirit от Май 06, 2009, 10:58 по идее так [0-9]{1,3},[0-9]{1,3},[0-9]{1,3}.
правда тут маленькая лажа: если вводить нули в одну из секций, то их можно ввести 3 штуки. :) Название: Re: Вопрос по регулярным выражениям (QRegExp) Отправлено: OS2 от Май 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. >:( Название: Re: Вопрос по регулярным выражениям (QRegExp) Отправлено: spirit от Май 06, 2009, 11:06 да, точно, я протупил. :)
Название: Re: Вопрос по регулярным выражениям (QRegExp) Отправлено: Rcus от Май 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, то не проще ли нормальный валидатор написать? Название: Re: Вопрос по регулярным выражениям (QRegExp) Отправлено: Admin от Май 06, 2009, 11:39 эээ
а у меня кажись попроще получилось ;D Цитировать (\d+),(\d+),(\d+) аа не то, вот то: Цитировать (\d{1,3}),(\d{1,3}),(\d{1,3}) Название: Re: Вопрос по регулярным выражениям (QRegExp) Отправлено: spirit от Май 06, 2009, 11:41 эээ не, значения > 255 будут допускаться, да и к тому же в любую из триад можно ввести любое количество символов, а вот regexp Rcus'a работает как надо.а у меня кажись попроще получилось ;D Цитировать (\d+),(\d+),(\d+) Название: Re: Вопрос по регулярным выражениям (QRegExp) Отправлено: OS2 от Май 06, 2009, 11:41 Спасибо Rcus такое выражение очень даже подходит. :D
Вот только возник вопрос, если в QLineEdit, к которому применино это регулярное выражение, введено например: 0,0,0 то, невозможно стереть 0, чтобы заменить его на любую другую цифру, приходится либо выделять этот 0 и вводить другое значение, либо писать рядом с 0 цифру и после этого удалять сам 0. Можно это как нибудь побороть? ЗЫ: Цитировать Если это выражение для QRegExpValidator, то не проще ли нормальный валидатор написать? именно для него, но с валидаторами я не знаком, а написать надо всего одну строку.... :(Название: Re: Вопрос по регулярным выражениям (QRegExp) Отправлено: Admin от Май 06, 2009, 11:45 аа не то, вот то:
Цитировать (\d{1,3}),(\d{1,3}),(\d{1,3}) Название: Re: Вопрос по регулярным выражениям (QRegExp) Отправлено: OS2 от Май 06, 2009, 11:50 Цитировать аа не то, вот то: Позволяет вводить значения > 255Название: Re: Вопрос по регулярным выражениям (QRegExp) Отправлено: spirit от Май 06, 2009, 11:52 аа не то, вот то: тоже самое что и я написал :) кроче, не катит ;DЦитировать (\d{1,3}),(\d{1,3}),(\d{1,3}) Название: Re: Вопрос по регулярным выражениям (QRegExp) Отправлено: Admin от Май 06, 2009, 11:58 да не катит
нету в регекспах <> для int Название: Re: Вопрос по регулярным выражениям (QRegExp) Отправлено: OS2 от Май 06, 2009, 20:02 А по этому поводу не у кого мыслей нету:
Цитировать Вот только возник вопрос, если в QLineEdit, к которому применино это регулярное выражение, введено например: 0,0,0 то, невозможно стереть 0, чтобы заменить его на любую другую цифру, приходится либо выделять этот 0 и вводить другое значение, либо писать рядом с 0 цифру и после этого удалять сам 0. Можно это как нибудь побороть? Название: Re: Вопрос по регулярным выражениям (QRegExp) Отправлено: Rcus от Май 06, 2009, 20:11 Валидатор написать.
Название: Re: Вопрос по регулярным выражениям (QRegExp) Отправлено: OS2 от Май 06, 2009, 20:24 Валидатор написать. А по подробней.... ::) ::) ::)Название: Re: Вопрос по регулярным выражениям (QRegExp) Отправлено: Rcus от Май 06, 2009, 20:33 А нет поподробней, валидатор просто надо написать. Для начала нужно переопределить один метод, возвращающий одно из трех состояний... Собственно это уже в доках написано
Название: Re: Вопрос по регулярным выражениям (QRegExp) Отправлено: mugabe от Май 07, 2009, 09:04 ^([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])$
так не прокатит? Название: Re: Вопрос по регулярным выражениям (QRegExp) Отправлено: spirit от Май 07, 2009, 09:05 чем это выражение отличается, то того, который Rcus написал?
Название: Re: Вопрос по регулярным выражениям (QRegExp) Отправлено: OS2 от Май 07, 2009, 10:54 чем это выражение отличается, то того, который Rcus написал? Да нет, отличается.2 mugabe Большое спасибо! Название: Re: Вопрос по регулярным выражениям (QRegExp) Отправлено: mugabe от Май 08, 2009, 17:56 чем это выражение отличается, то того, который Rcus написал? я там специально жирным выделил, хотя с первого взгляда не заметно :)вопросики добавил, для необязательности цифры Название: Re: Вопрос по регулярным выражениям (QRegExp) Отправлено: spirit от Май 08, 2009, 17:58 ага, я уже врубился :)
|