2015-09-12 3 views
0

У меня есть регистрационная форма и ввод «instagram-username».Instagram имя пользователя Regex -PHP

Instagram Имя пользователя может включать только: a-z A-Z 0-9 dot(.) underline(_)

Это мой код:

if(!empty($instaUsername) && preg_match("/([A-Za-z._])\w+/", $instaUsername)) { 
      throw new Exception ("Your name Instagram is incorrect"); 
} 

Когда $instaUsername = "name.123" или "name_123" это дает мне ошибку.

Как сделать регулярное выражение в соответствии со следующими требованиями?

a-z A-Z 0-9 dot(.) underline(_)

Я хотел бы иметь хорошие учебники по регулярному выражению в качестве комментария.

+1

'preg_match ('/^[a- zA-Z0-9 ._] + $/', $ instaUsername) ', попробуйте это? – user5173426

+0

http://www.regular-expressions.info/tutorial.html – Mariano

+1

Итак, где мы с этим вопросом? – Rizier123

ответ

3

Перемещение вперед из раздела комментариев, это то, что вы хотите:

if(!empty($instaUsername) && preg_match('/^[a-zA-Z0-9._]+$/', $instaUsername)) { 
      throw new Exception ("Your name Instagram is incorrect"); 
} 
+2

Это неправильно, потому что вы не можете начинать или заканчивать точкой ('.'), и кажется, что вы также не можете иметь последовательные точки. – beruic

1

Это регулярное выражение должно работать для вас:

~^([a-z0-9._])+$~i 

Вы можете использовать anchors совпадать с началом (^) и конец $ вашего входа. И используйте modifieri для нечувствительности к регистру.

2

jstassen имеет хорошую запись на имена пользователей Insta:

(?:^|[^\w])(?:@)([A-Za-z0-9_](?:(?:[A-Za-z0-9_]|(?:\.(?!\.))){0,28}(?:[A-Za-z0-9_]))?) 
+0

Только для имени пользователя '^ ([A-Za-z0-9 _] (?: (?: [A-Za-z0-9_] | (?: \. (?! \.))) {0,28 } (?: [A-Za-z0-9 _]))?) $ 'Работает для меня. –

Смежные вопросы