Регулярка

Николай В.
На сайте с 07.09.2006
Offline
62
470

Коллеги, помогите написать регулярное выражение для условия «От 3 до 20 символов. Цифры, подчеркивания, дефисы. Либо кириллица, либо латинские буквы — не одновременно».

O3
На сайте с 17.11.2008
Offline
127
#1

preg('|^[-_0-9z-a]{3,20}$|i',$target) || preg('|^[-_0-9а-я]{3,20}$|i',$target)

может так...

NB
На сайте с 14.09.2004
Offline
95
#2

"^([\-_0-9A-Za-z]{3,20})|([\-_0-9А-Яа-я]{3,20})$"

N
На сайте с 06.05.2007
Offline
419
#3

Nick Bubelo, ну почти. Только ваш вариант будет выбирать и частичное совпадение, а нужно от начала до конца :

^[0-9a-zA-Z\-_]{3,20}$|^[0-9а-яА-Я\-_]{3,20}$

Кнопка вызова админа ()
NB
На сайте с 14.09.2004
Offline
95
#4

netwind, ага, согласен.

Николай В.
На сайте с 07.09.2006
Offline
62
#5
netwind:
^[0-9a-zA-Z\-_]{3,20}$|^[0-9а-яА-Я\-_]{3,20}$

О, класс. Спасибо. А то я сначала, как Nick Bubelo написал, и удивлялся, почему у меня строки вроде «пиво-beer-пиво» матчатся :)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий