Как составить регулярку проверяющую строку полностью?
Мне нужна регулярка которая допускает строку состоящую только из букв английского и русского алфавита, длиной от 2 до 25 символов. Мой вариант: "/^[А-Яа-яA-Za-z]{2, 25}/"
Как я это понимаю: сначала строки символы А-Яа-яA-Za-z в количестве от двух до 25.
Но если ввести строку типа sdfsd sdfsdf то preg_match всеравно возвращает true.
Как сделать так что бы регулярка проверяла строку полностью, и не пропускала строки с пробелами, цифрами, и спецсимволами?
а окончание строки?
бакс $ /^[А-Яа-яA-Za-z]{2, 25}$/
ну флаги (модификаторы) соответствующие нужны еще :) i - регистронезависимость, чтобы не писать А-Яа-яA-Za-z, а достаточно было а-яa-z u - для корректной работы с юникодом preg_match('/^[a-zа-яё]{2,25}$/iu', $string);
строка типа sdfsd sdfsdf будет true по причине удовлетворенности регулярному выражению. от 2-х до 25 символов от начала строки. sdfsd от начала сроки имеет длину 5, что подходит под диапазон 2-25
Спасибо большое за разъяснения! Я совсем недавно коснулся темы регулярок, поэтому еще не очень в них разбираюсь. У меня два вопроса возникло: 1) почему "ё" отдельно упоминается в конце, и 2) зачем нам флаг для работы с юникодом, если и в PHP и на MySQL сервере используется кодировка utf8?
Dreaded,
модификатор u юникод нужен для корректной работы регулярки
грубо говоря, как я понимаю, движок регулярок в php переехали с перла и он не менялся, и там есть некоторые нюансы, которые могут правиться/дополняться модификаторами п.с. возможно кто-то более знающий что-то добавит или подправит, если я в чем-то не прав)
ё - кстати по похожей причине не имеется в наборе а-я.
Если не ошибаюсь, то и некоторые украинские буквы тоже не попадают под диапазон а-я
поэтому их приходится дописывать для совместимости)
можно и не в конце писать, а в начале, сути это не меняет :)