Регулярное выражение валидации названия города

Статус
В этой теме нельзя размещать новые ответы.

CeBePHb1Y

Новичок
не могу сообразить как правильно составить выражение
$isValid=preg_match('/([a-zA-Zа-яА-ЯёЁ]+[-]?[a-zA-Zа-яА-ЯёЁ]*[-]?[a-zA-Zа-яА-ЯёЁ]*[-]?[a-zA-Zа-яА-ЯёЁ]*)/i', $city);
это выражение пропускает цифры. помогите составить
 

Активист

Активист
Команда форума
А зачем вообще валидировать название города???))

по поводу
это выражение пропускает цифры. помогите составит
Нужно "обрамить" регулярку в ^ (начало строки) и $(конец строки)
PHP:
$isValid=preg_match('/^([a-zA-Zа-яА-ЯёЁ]+[-]?[a-zA-Zа-яА-ЯёЁ]*[-]?[a-zA-Zа-яА-ЯёЁ]*[-]?[a-zA-Zа-яА-ЯёЁ]*)$/i', $city);
Но ваше выражение кривое.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Есть такие города, как, например Томск-7, правда ныне он уже Северск, но не столь важно...
 

CeBePHb1Y

Новичок
просто мне не хочется чтобы в поле всякую чушь писали) а что если скрипт подразумевает именно ПАРАВИЛЬНОЕ написание города? приведите весомые доводы, может я передумаю...)
 

CeBePHb1Y

Новичок
али и вправду не проверять... только проверять на запрещенные символы...
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
CeBePHb1Y, ну не передумывай, мы ведь тебе не обязаны ничем, и ты нам тоже. Хочешь мучиться - вперед. Только вот "запрещенных" символов не бывает.
 

CeBePHb1Y

Новичок
c0dex, нет, вы мне просто обьясните, почему нет? я для того и спросил, чтобы не "мучиться". не правильно выразился "небезопасные символы", спасибо что обратили внимние. начнет какой-нибудь "новичек" вставлять какие-нибудь "Петро3а8одски", "4елябински" или еще что-то типа "<b>Иркутск</b>" и что? совсем отказаться от этого поля?
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
CeBePHb1Y, что с того, что вставит? В VK вот не имеется валидации. Кто-то страдает от того, что я напишу в поле город "Мухосранск"? Чем обосновано желание? Никто не мешает тебе вывести все так, как оно вставлено. B HTML теги тут не при чем.
 

hell0w0rd

Продвинутый новичок
Если хочется валидировать - найдите базу городов, и предоставляйте на выбор. Другого способа нет.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
hell0w0rd, правда выхлоп будет не на 100% точен все равно.
 

CeBePHb1Y

Новичок
что ж, придется довериться пользователю) а в дейстивтельности... пусть хоть в мухосранске живет...))
 
Последнее редактирование:

contentim

Новичок
Код:
^(([a-zA-Zа-яА-ЯёЁ]*(\s*)\([a-zA-Zа-яА-ЯёЁ\s]*\))|([a-zA-Zа-яА-ЯёЁ\-0-9]*)|([a-zA-Zа-яА-ЯёЁ]+[\-|\s]?[a-zA-Zа-яА-ЯёЁ]*[\-|\s]?[a-zA-Zа-яА-ЯёЁ]*[\-|\s]?[a-zA-Zа-яА-ЯёЁ]*))$
Белорецк-344
Белореченск-на-Амуре
Бердск
Каменск-Уральский
Киров (Кировская область)
Кирово-Чепецк

demo - regex101.com/r/iuVYiO/6
 

Страшный Злодей

Бывший член клуба (достало хамство).
просто мне не хочется чтобы в поле всякую чушь писали) а что если скрипт подразумевает именно ПАРАВИЛЬНОЕ написание города? приведите весомые доводы, может я передумаю...)
Правильно ли я понимаю, что ваша задача это отсечение любого значение, кроме того, которое соответствует названию города? Если так, то лучшим решением будет не регулярка, а сопоставление введённого значения с заранее определённым списком городов.

Либо, если такой список составить проблематично, то определить для себя, какие символы вы готовы принимать и в каком количестве, а вот уже это условие записать в регулярку. Тогда и свой вопрос вы сформулирует более чётко, а скорее всего и необходимость в его постановке отпадёт.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху