Форум программистов, компьютерный форум, киберфорум
PHP
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
 Аватар для anka_manka
1 / 1 / 0
Регистрация: 26.06.2019
Сообщений: 11

Валидация логина preg_match

01.12.2021, 23:58. Показов 1267. Ответов 8

Студворк — интернет-сервис помощи студентам
Не получается выполнить валидацию с помощью preg_match

Шаблон заполнения поля: ___ , ___ @ ___ ! ___. Общая длина поля – 10-50 символов. Первый блок (6 символов) – только цифры, второй блок (до 10 символов) – только буквы русского алфавита, третий блок (до 15 символов) – только прописные (заглавные) буквы. Последние блок (любое количество символов) – только английские буквы в диапазонах [A; X], [c; y] и {-, /}.

Пишу проверку так:

!preg_match("/^[0-9]{6},[а-яА-Я]{1,10}@[А-Я]{1,15}![c-yA-X-.]*$/",$_POST["adress1"])

но при вводе например "195426,Россия@ПЕРЕДОВИКИ!ru" выдает ошибку
где я ошиблась?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.12.2021, 23:58
Ответы с готовыми решениями:

preg_match() валидация
Собственно. elseif (!preg_match('{5,7}', $_POST)) echo 'уря!!'; При выполнении получаю ошибку: preg_match() : Unknown modifier '{' in...

Валидация логина
Написал функцию , работала нормально до введения валидации . function validateUser ($value) { $value = htmlspecialchars ( trim (...

Проверка логина из формы на наличие логина в базе данных
Пожалуюста подскажите что у меня неправильно работает в коде. Ошибок вродебы нет. Вообщем код должен получать данные из формы записывать их...

8
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,909
02.12.2021, 09:43
У меня работает.
PHP
1
2
3
$str = "195426,Россия@ПЕРЕДОВИКИ!ru";
$result = preg_match("/^[0-9]{6},[а-яА-Я]{1,10}@[А-Я]{1,15}![c-yA-X-.]*$/",$str);
var_dump($result); // int(1)
Может поле в форме называется иначе? Например address1.
0
Невнимательный
 Аватар для ft4l
3107 / 1277 / 358
Регистрация: 08.02.2013
Сообщений: 7,460
Записей в блоге: 2
02.12.2021, 09:45
Лучший ответ Сообщение было отмечено anka_manka как решение

Решение

Цитата Сообщение от anka_manka Посмотреть сообщение
выдает ошибку
UTF-8 похоже кодировка используется. модификатор /u попробуйте добавить
PHP
1
2
3
4
5
6
7
$re = '/^[0-9]{6},[ЁА-яё]{1,10}@[А-Я]{1,15}![c-yA-X.-]*$/u';
foreach([
    '195426,Россия@ПЕРЕДОВИКИ!ru', 
    '123456,А@Я!', 
] AS $s){
    echo var_export(preg_match($re, $s), 1), ': ', $s, "\n";
}
1: 195426,Россия@ПЕРЕДОВИКИ!ru
1: 123456,А@Я!

+ в [] наборах символов "минус" можно не экранировать если он скраю,
а так наверно [c-yA-X\-.] , но может работало и так ) не проверял
1
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
02.12.2021, 10:00
anka_manka, и учтите, что ваша регулярка посчитает вот такое валидным:
195426,Россия@--------------!ru
0
168 / 124 / 42
Регистрация: 25.10.2019
Сообщений: 476
03.12.2021, 12:05
А что, простите, случилось с FILTER_VALIDATE_EMAIL и FILTER_SANITIZE_EMAIL ?
Хотя..с кириллицей, вроде не робит.. если правильно помню (


UPD.
Обой, поторопился

Как по мне - лучше такими идеями наделять не логин(ломать шаблон), а его свойства.
0
 Аватар для anka_manka
1 / 1 / 0
Регистрация: 26.06.2019
Сообщений: 11
03.12.2021, 21:59  [ТС]
не помогло, видимо, надо читать документацию
0
Невнимательный
 Аватар для ft4l
3107 / 1277 / 358
Регистрация: 08.02.2013
Сообщений: 7,460
Записей в блоге: 2
03.12.2021, 22:16
Цитата Сообщение от anka_manka Посмотреть сообщение
не помогло
Что пробовали ? в моём примере без /u совпадало только со второй строкой, но не с первой.
Есть ещё один момент.
Текст скрипта, в котором это выражение с русскими буквами,
и проверяемый текст , оба должны быть в одной кодировке.
В моём примере весь текст в utf-8.

Посмотрите в какой кодировке код, и определите как-то в какой кодировке проверяемые данные.
0
 Аватар для anka_manka
1 / 1 / 0
Регистрация: 26.06.2019
Сообщений: 11
04.12.2021, 19:09  [ТС]
Данное задание скорее для того, чтобы понять работу функции preg_match, а не для того, чтобы в действительности использовать результат для валидации, поэтому тут логика не совсем полная
Но все равно спасибо, что подметили
0
193 / 140 / 36
Регистрация: 19.11.2020
Сообщений: 881
04.12.2021, 19:15
Цитата Сообщение от websyst_ru Посмотреть сообщение
Хотя..с кириллицей, вроде не робит.. если правильно помню (
100% аналог и кирилица
PHP
1
2
3
4
5
6
7
8
9
$regexp0 = "/^(?!(?:(?:\\x22?\\x5C[\\x00-\\x7E]\\x22?)|(?:\\x22?[^\\x5C\\x22]\\x22?)){255,})(?!(?:(?:\\x22?\\x5C[\\x00-\\x7E]\\x22?)|(?:\\x22?[^\\x5C\\x22]\\x22?)){65,}@)(?:(?:[\\x21\\x23-\\x27\\x2A\\x2B\\x2D\\x2F-\\x39\\x3D\\x3F\\x5E-\\x7E\\pL\\pN]+)|(?:\\x22(?:[\\x01-\\x08\\x0B\\x0C\\x0E-\\x1F\\x21\\x23-\\x5B\\x5D-\\x7F\\pL\\pN]|(?:\\x5C[\\x00-\\x7F]))*\\x22))(?:\\.(?:(?:[\\x21\\x23-\\x27\\x2A\\x2B\\x2D\\x2F-\\x39\\x3D\\x3F\\x5E-\\x7E\\pL\\pN]+)|(?:\\x22(?:[\\x01-\\x08\\x0B\\x0C\\x0E-\\x1F\\x21\\x23-\\x5B\\x5D-\\x7F\\pL\\pN]|(?:\\x5C[\\x00-\\x7F]))*\\x22)))*@(?:(?:(?!.*[^.]{64,})(?:(?:(?:xn--)?[a-zа-я0-9]+(?:-+[a-zа-я0-9]+)*\\.){1,126}){1,}(?:(?:[a-zа-я][a-zа-я0-9]*)|(?:(?:xn--)[a-zа-я0-9]+))(?:-+[a-zа-я0-9]+)*)|(?:\\[(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){7})|(?:(?!(?:.*[a-f0-9][:\\]]){7,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?)))|(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){5}:)|(?:(?!(?:.*[a-f0-9]:){5,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3}:)?)))?(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))(?:\\.(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))){3}))\\]))$/iDu";
 
$email ='мыло@саит.рф';
 
if (preg_match($regexp0, $email) === 1) {
    echo 'Валидно', PHP_EOL;
} else {
    echo 'Не валидно', PHP_EOL;
}
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.12.2021, 19:15
Помогаю со студенческими работами здесь

ASP .NET Отправка форма логина, если страница логина представлена asp:Content
Здравствуйте! Имеется страница логиа. Хочу отправить данные методу класса Login.cs, однако форму создать не получается. ...

0 и preg_match
Регулярка: /(\d)/ Строка(в строке 0 но форумные теги глючат и показывают 1): 0 Регулярка не находит 0?Почему и как это исправить?

preg_match $
делаю обычную проверку и все знаки проверяет кроме $ if(!preg_match("/\@|\#/",$test)){ // работает ...

preg_match
Устал материть preg_match. Из-за чего он может зависнуть? Передаю ему html файлы, некоторые он обрабатывает хорошо, но в некоторых что-то...

preg_match
Приветствую, понадобилось спарсить текст, текст сам такой "{"access_token":"533bacf01e11f55b536a565b57531ac114461ae8736d6506a3"}"...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK сделайте это, JDK, то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера . . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru