[ Полезный рекламный блок ]
Попробуйте свои силы в игре, где ваши навыки программирования на C# станут решающим фактором. Переходите по ссылке 🔰.
В этой статье, мы рассмотрим самые распространенные примеры регулярных выражений, которые могут быть полезны вам, для решения задач.
Материал этой статьи будет дополнятся на регулярной основе.
Если вам необходим пример регулярного выражения, оставляйте комментарий к этой статьей, в котором опишите проблему.
В конце комментария, оставьте ваш емейл адрес. Как только статья будет дополнена решением вашей проблемы, мы известим вас на емейл адрес.
Текущий список регулярных выражений следующий:
Проверка email адреса
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
static void Main() { string pattern = "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$"; /* Или так: string pattern = @"^(?("")(""[^""]+?""@)|(([0-9a-z]((\.(?!\.))|[-!#\$%&'\*\+/=\?\^`\{\}\|~\w])*)(?<=[0-9a-z])@))" + @"(?(\[)(\[(\d{1,3}\.){3}\d{1,3}\])|(([0-9a-z][-\w]*[0-9a-z]*\.)+[a-z0-9]{2,17}))$"; */ string email = "alex@gmail.com"; if (Regex.IsMatch(email, pattern, RegexOptions.IgnoreCase)) { Console.WriteLine("Корректный email адрес"); } else { Console.WriteLine("Некорректный email адрес"); } } |
Пояснение:
- ^ — совпадает с началом строки
- [a-zA-Z0-9._%+-]+ — соответствует одному или нескольким символам из набора букв (как прописных, так и строчных), цифр и специальных символов ., _, %, + и —
- @ — соответствует символу @
- [a-zA-Z0-9.-]+ — соответствует одному или нескольким символам из набора букв (прописных и строчных), цифр и специальных символов ., _, %, + и -.
- \. — соответствует символу . (экранированному обратной косой чертой)
- [a-zA-Z]{2,} — совпадает с двумя или более буквами (как прописными, так и строчными)
- $ — совпадает с концом строки
Проверка пароля
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
static void Main() { string pattern = @"^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[^a-zA-Z0-9])\S{1,16}$"; while (true) { Console.WriteLine("Введите пароль"); string password = Console.ReadLine(); if (Regex.IsMatch(password, pattern, RegexOptions.IgnoreCase)) { Console.WriteLine("Пароль подтвержден"); break; } else { Console.WriteLine("В пароле должна быть минимум одна цифра, одна буква(английская), большая буква и любой знак, " + "который не цифра и не буква, максимальная длина пароля 16 символов."); } } } |
Рассмотрим второй вариант:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
static void Main() { string pattern = @"^(?=.*[A-Z])(?=.*[a-z])(?=.*\d)(?=.*[^\da-zA-Z]).{8,}$"; string password = "qwerty"; if (Regex.IsMatch(password, pattern, RegexOptions.IgnoreCase)) { Console.WriteLine("Пароль подтвержден"); } else { Console.WriteLine(""" Укажите пароль, следуя инстуркциям: Минимальная длина 8 символов Хотя бы одна заглавная буква Хотя бы одна строчная буква Хотя бы одна цифра Хотя бы один специальный символ """); } } |
Объяснение:
- ^ : начало строки
- (?=.*[A-Z]) : положительное опережение для обеспечения наличия в строке хотя бы одной заглавной буквы
- (?=.*[a-z]) : положительное опережение, чтобы убедиться, что в строке есть хотя бы одна строчная буква
- (?=.*\d) : положительное опережение, чтобы убедиться, что в строке есть хотя бы одна цифра
- (?=.*[^\da-zA-Z]) : положительное опережение, чтобы убедиться, что в строке есть хотя бы один специальный символ .{8,} : совпадение с любым символом (кроме новой строки) не менее 8 раз
- $ : конец строки
Проверка номера телефона
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
static void Main() { string pattern = @"^((\+)?\b(8|38)?(0[\d]{2}))([\d-]{5,8})([\d]{2})"; string phone = "380964649874"; if (Regex.IsMatch(phone, pattern, RegexOptions.IgnoreCase)) { Console.WriteLine("Проходит"); } else { Console.WriteLine(""" Укажите один из следующих вариантов номера: +380970601478 380970601478 +80970601478 80970601478 +0970601478 +0970601478 0970601478 097-060-1478 097-060-14-78 """); } } |
Проверка кредитной карты
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
static void Main() { string pattern = @"^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13})$"; string phone = "5168756637895469"; if (Regex.IsMatch(phone, pattern, RegexOptions.IgnoreCase)) { Console.WriteLine("Проходит"); } else { Console.WriteLine(""" Укажите карту, соответствующую следующим типам кредитных карт: Visa (начинается с 4) Mastercard (начинается с 5) Discover (начинается с 6011 или 65) American Express (начинается с 34 или 37) """); } } |
Объяснение:
- Регулярное выражение использует якоря ^ и $ для соответствия всей строке.
- Символ | используется для указания альтернативных шаблонов для сопоставления.
- Класс символов [0-9] соответствует любой цифре от 0 до 9.
- Квантификатор {n} указывает, что предыдущий элемент должен совпасть ровно n раз.
- Группа (?:…) без захвата используется для группировки элементов вместе без их захвата.
- Наконец, необязательная группа (?:…)? соответствует предыдущему элементу ноль или один раз.
Достать дату рождения
Вам нужно извлечь все даты из строки в формате «YYYY-MM-DD»?
Вот пример:
1 2 3 4 5 6 7 8 9 10 11 12 |
static void Main() { string pattern = @"\b\d{4}-\d{2}-\d{2}\b"; string input = "Today is 2023-02-21 and the meeting is on 2023-02-28"; MatchCollection matches = Regex.Matches(input, pattern); foreach (Match match in matches) { Console.WriteLine(match.Value); } } |
В этом примере мы используем шаблон регулярного выражения для поиска всех дат во входной строке. Шаблон соответствует любой последовательности из четырех цифр, за которыми следует дефис, затем две цифры, еще один дефис и, наконец, еще две цифры. Мы используем границы слов (\b) в начале и в конце шаблона, чтобы обеспечить соответствие только полным датам, а не частичным датам в больших строках.
Метод Regex.Matches используется для поиска всех вхождений шаблона во входной строке. Затем мы перебираем полученную коллекцию MatchCollection и выводим каждое значение совпадения в консоль.
Я надеюсь, что вам понравилось читать эту статью, и она оказалась легкой для понимания. Пожалуйста, дайте мне знать, если у вас есть какие-либо комментарии или исправления.
Так же вам может быть интересна предыдущая статья — Почему стоит учить именно C#?
Вы начинающий программист, который хочет изучить все тонкости языка C#?
Пройдите наш тест на 13 вопросов, чтобы узнать, как много вы знаете на самом деле!
C# Braincheck |
Вы хотите научится писать код на языке программирования C#?
Создавать различные информационные системы, состоящие из сайтов, мобильных клиентов, десктопных приложений, телеграмм-ботов и т.д.
Переходите к нам на страницу Dijix и ознакомьтесь с условиями обучения, мы специализируемся только на индивидуальных занятиях, как для начинающих, так и для более продвинутых программистов. Вы можете взять как одно занятие для проработки интересующего Вас вопроса, так и несколько, для более плотной работы. Благодаря личному кабинету, каждый студент повысит качество своего обучения, в вашем распоряжении:
- Доступ к пройденному материалу
- Тематические статьи
- Библиотека книг
- Онлайн тестирование
- Общение в закрытых группах
Живи в своем мире, программируй в нашем.