- •Задание: Создайте самостоятельно остальные таблицы с соответствующими названиями posts, grafik. Структура таблиц предоставлена в таблицах 2.2,2.3
- •Самостоятельно создайте связь между таблицами «Табель сотрудников» и «Сотрудники».
- •Создайте класс для соединения с базой данных. Для этого добавьте в проект библиотеку
- •Создать еще одну таблицу, где будут сохраняться все данные о зарплате сотрудников за каждый месяц.
- •Создать отдельно таблицу, где будут храниться налоги на з/п (соц. Фонд и другие)
- •Валидация данных.
Валидация данных.
Регулярные выражения (англ. regular expressions) — формальный язык поиска и осуществления манипуляций с подстроками в тексте, основанный на использовании метасимволов (символов-джокеров, англ. wildcard characters).
Регулярные выражения используются в большом количестве языков программирования.
В Java тоже есть пакет, который позволяет работать с ними - java.util.regex.
Метасимволы
Основой синтаксиса регулярных выражений является тот факт, что некоторые символы встречающиеся в строке рассматриваются не как обычные символы, а как имеющие специальное значение (т.н. метасимволы). Именно это решение позволяет работать всему механизму регулярных выражений. Каждый метасимвол имеет свою собственную роль.
Вот примеры основных метасимволов:
^ - (крышка, цирркумфлекс) начало проверяемой строки
$ - (доллар) конец проверяемой строки
. - (точка) представляет собой сокращенную форму записи для символьного класса, совпадающего с любым символом
| - означает «или». Подвыражения, объединенные этим способом, называются альтернативами (alternatives)
? - (знак вопроса) означает, что предшествующий ему символ является необязательным
+ - обозначает «один или несколько экземпляров непосредственно предшествующего элемента
* – любое количество экземпляров элемента (в том числе и нулевое)
\\d – цифровой символ
\\D – не цифровой символ
\\s – пробельный символ
\\S – не пробельный символ
\\w – буквенный или цифровой символ или знак подчёркивания
\\W – любой символ, кроме буквенного или цифрового символа или знака подчёркивания
Давайте рассмотрим несколько примеров с некоторыми из этих метасимволов. Следующий метод проверит строку на содержание в ней слова BACON и только! Никаких пробелов и других символов. Про классы Pattern и Matcher мы ещё поговорим. Метод matches() проверяет строку на соответствие регулярному выражению.
Квантификаторы
Регулярные выражения предоставляют инструменты позволяющие указать сколько раз может повторятся один или несколько символов. С некоторыми мы уже встречались:
+ - Одно или более
* - Ноль или более
? - Ноль или одно
{n} - Ровно n раз
{m,n} - От m до n включительно
{m,} - Не менее m
{,n} - Не более n
Теперь мы можем полностью понять регулярное выражение с самого первого примера: "^[a-z0-9_-]{3,15}$" .
Разберем её по кусочкам:
^ - начало строки
[a-z0-9_-] - символ который может быть маленькой латинской буквой или цифрой или символом подчеркивания.
{3,15} - предыдущий объект(смотри выше) может повторяться от 3х до 15раз.
Классы регулярных выражений в Java
Пакет, который позволяет работать с регулярными выражениями - java.util.regex.
В библиотеке регулярных выражений имеется три основных класса: Pattern, Matcher и PatternSyntaxException. (еще есть классы ASCII, MatchResult, UnicodeProp)
1. Class Pattern - Регулярное выражение, которое Вы записываете в строке, должно сначала быть скомпилированным в объект данного класса. После компиляции объект этого класса может быть использован для создания объекта Matcher.
В классе Pattern объявлены следующие методы:
Pattern compile(String regex) – возвращает Pattern, который соответствует regex.
Matcher matcher(CharSequence input) – возвращает Matcher,
с помощью которого можно находить соответствия в строке input.
http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html
2. Class Matcher
Объект Matcher анализирует строку, начиная с 0, и ищет соответствие шаблону.
После завершения этого процесса Matcher содержит много информации о найденных (или не найденных) соответствиях в нашей входной строке. Мы можем получить эту информацию, вызывая различные методы нашего объекта Matcher:
boolean matches() просто указывает, соответствует ли вся входная последовательность шаблону.
int start() указывает значение индекса в строке, где начинается соответствующая шаблону строка.
int end() указывает значение индекса в строке, где заканчивается соответствующая шаблону строка плюс единица.
String group() - возвращает найденную строку
String group(int group) - если у Вас в регулярном выражении были группы, то можно вывести только кусочек строки соответствующей определенной группе.
http://docs.oracle.com/javase/1.5.0/docs/api/java/util/regex/Matcher.html
Выражение |
Описание |
\d [0-9] |
Одна цифра от 0 до 9. |
\D [^0-9] |
Любой символ кроме цифры. |
\s |
Пробел. |
[A-Z] |
Только заглавная латинская буква. |
[A-Za-z] |
Только латинская буква в любом регистре. |
[А-Яа-яЁё] |
Только русская буква в любом регистре. |
[A-Za-zА-Яа-яЁё] |
Любая буква русского и латинского алфавита. |
[0-9]{3} |
Три цифры. |
[A-Za-z]{6,} |
Не менее шести латинских букв. |
[0-9]{,3} |
Не более трёх цифр. |
[0-9]{5,10} |
От пяти до десяти цифр. |
^[a-zA-Z]+$ |
Любое слово на латинице. |
^[А-Яа-яЁё\s]+$ |
Любое слово на русском включая пробелы. |
^[ 0-9]+$ |
Любое число. |
[0-9]{6} |
Почтовый индекс. |
\d+(,\d{2})? |
Число в формате 1,34 (разделитель запятая). |
\d+(\.\d{2})? |
Число в формате 2.10 (разделитель точка). |
\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3} |
IP-адрес |
Примечание. Как добавить валидацию на форму?
Вы должны импортировать в свой проект :
import java.util.regex.Matcher;
import java.util.regex.Pattern;
Например, функция для проверки ввода на целое число
public String isInteger(String s) {
String message;
Pattern pattern = Pattern.compile("^\\d+?$");
Matcher m = pattern.matcher(s);
if (m.matches() == false) {
message = "*Неверный ввод. Введите цифры";
} else {
message = "";
}
return message;
}
Задание: Добавьте валидацию при расчете заработной платы на поле Календарное время.
