Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Формат строки


Автор: novichok84 23.2.2007, 12:49
Привет!

Друг мне посоветовал ваш форум.

В универе надо написатЬ задачку... 
И я споткнулся во на чем -> 

нужно получитЬ строку и проверитЬ соответстует ли она следующим правлам :

1) соодержит мин 1 маленЬкую букву  [a..z]
2) цоодержит мин 1 цифру [0..9]
3) Длинна строки мин 6 символов

Стыдно конечно... Но не знаю я синтаксис регЕх в ява... 

Спасибо.

Автор: LSD 23.2.2007, 13:21
Код
String str = " d asd asd as9";
Pattern pattern = Pattern.compile("[a-z]|\\d");
Matcher matcher = pattern.matcher(str);
System.out.println(str.length() >= 6 && matcher.find());

Автор: novichok84 23.2.2007, 13:34
Супер! Спасибо smile 



А можно немного покоментироватЬ? 

Что означает "|" ? 

Тут естЬ система поощрения - "+" требуется LSD!

Автор: powerOn 23.2.2007, 13:39
Цитата(novichok84 @  23.2.2007,  13:34 Найти цитируемый пост)
Тут естЬ система поощрения - "+" требуется LSD!


fixed.

Автор: LSD 23.2.2007, 13:53
Цитата(novichok84 @  23.2.2007,  13:34 Найти цитируемый пост)
Что означает "|" ?

Или.

Вообще регулярки в Java, в большинстве своем совпадают с регулярками в Perl. Поищи по форуму книгу Дж. Фридл - Регулярные выражения.

Автор: novichok84 23.2.2007, 18:11
Ето регулярное выражение работает не верно...

Например оно акцептирует строку "11111111111111" 

Автор: nornad 23.2.2007, 18:52
Держи выражение:
"([a-z].*\\d)|(\\d.*[a-z])"
Длину строки проверяй после. Хотя, нет - лучше до, ибо проверка на соответствие регулярному выражению куда тяжелее.

Автор: novichok84 26.2.2007, 16:09
Супер! + for nornad !

А как сделатЬ так что бы строка еще ко всемы упомянутому не соодержала "не нормалЬные" символы :  '  "" ; . / ?  >  и прочие...

1) соодержит мин 1 маленЬкую букву  [a..z]
2) цоодержит мин 1 цифру [0..9]
3) Длинна строки мин 6 символов
+ выше упомянутое

Автор: nornad 26.2.2007, 21:25
Цитата(novichok84 @  26.2.2007,  16:09 Найти цитируемый пост)
А как сделатЬ так что бы строка еще ко всемы упомянутому не соодержала "не нормалЬные" символы :  '  "" ; . / ?  >  и прочие...

Если тебе надо просто вырезать эти символы, то используй replaceAll.
Если же нужно именно проверить строку на содержание буквы и цифры и чтобы не было ненужных символов... Тут, имхо, придётся два раза проверять. Первый раз - проверяем по предыдущему шалбону. Второй раз - по шаблону "['\\";./?>]" (при добавлении символов не забывай про спецсимволы; например, "[" надо вставлять как "\\["). Если второй шаблон тоже подошёл, то в строке есть эти символы и она не подходит.

Автор: nornad 28.2.2007, 01:29
Вот, нашёл способ сделать проверку за один проход:

Код

"^[^:';\\"./?>]*([a-z][^:';\\"./?>]*\\d)|(\\d[^:';\\"./?>]*[a-z])[^:';\\"./?>]*$"


Если надо добавить к исключению символы кроме тех, что ты указал, то измени все четыре класса символов [^:';\\"./?>], добавив нужные. И не забудь эскейпить служебные символы самих регулярных выражений.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)