2013-04-24 2 views
8

Я пытаюсь создать выражение для проверки адресов Gmail. Вот что я сделал до сих пор.Регулярное выражение - проверка адресов Gmail

`^ ([\ w] [\ w.] (?!.) @ Gmail.com) Я пытаюсь создать выражение для проверки адресов Gmail. Вот что я сделал до сих пор.

Но он не работает так, как я хочу.

Gmail адрес:

  1. Первый и последний символ должен быть [а-z0-9] только
  2. Содержание имени пользователя [а-z0-9.]
  3. Там не может быть последовательных периодов (i.e: [email protected] [This is wrong])
  4. Длина имени пользователя должна быть от 6 до 30 букв.

Будучи честным, у меня нет большого опыта использования регулярных выражений.

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

+1

Кроме того, часть до '@' должен быть по крайней мере, 6 ** буквенно-числовые символы ** (точки не включены!). –

+3

Если это задание, которое * предполагает * определенные требования к адресам GMail, это нормально, но требования, которые вы заявляете, не соответствуют требованиям GMail. Двойные точки в имени разрешены (и игнорируются), как и суффикс, начинающийся с '+'. Часть имени и доменное имя gmail.com не зависят от регистра, поэтому допускаются прописные буквы. Я не знаю всех правил. Какова ваша фактическая цель? (Трудно думать о приложении, где вы хотите проверить адреса gmail и * только * адреса gmail.) –

+2

Чтобы расширить ответ @KeithThompson. Ваши требования к регулярному выражению удовлетворяют условиям ** регистрации ** для адресов gmail. Вы игнорируете тот факт, что gmail позволяет добавить + в конце вашего имени пользователя, а затем любой текст после этого вы хотите. Он также позволяет добавлять любое количество точек (даже прямо в начале/конце имени пользователя). Он также принимает адреса с различной капитализацией. Ваша плохая спецификация делает регулярное выражение, которое вы просили бесполезно в реальном мире. Вам будет лучше [официальное соответствие регулярному выражению] (http://stackoverflow.com/a/201378/1208914) – stormCloud

ответ

14

Вы не указали, какую реализацию регулярного выражения вы используете.

^[a-z0-9](\.?[a-z0-9]){5,}@g(oogle)?mail\.com$ 
  • [a-z0-9] первый символ
  • (\.?[a-z0-9]){5,} по крайней мере, пять следующих буквенно-цифровых символов, возможно, предшествует точка (см @ комментарий Даниила, скопированный с @ ответ Кристофера)
  • g(oogle)?mail Gmail или GoogleMail (см @ alroc)

Возможно, вам также захочется использовать совпадение шаблонов без учета регистра. (/.../i в JavaScript.)

+0

Соответствует 'a @ gmail.com' из-за этого'? ', Это предназначено? –

+0

@ChristopherCreutzig, не было. Исправленный. Благодаря! – kay

+0

Кроме того, '{4,}' также подсчитывает точки. См. Мой ответ для альтернативы, которая не требует и не нуждается в поиске. –

7

Простое регулярное выражение для сопоставления Gmail:

^[\w.+\-][email protected]\.com$ 

совпадений, если в начале строки есть \w (буквенно-цифровой или символ подчеркивания) или . или + или -, один или несколько раз, а затем @gmail.com в конце строки.

Вы можете проверить его на regexpal.

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

Google is your friend :)

+0

спасибо, полезная ссылка – Erich

+1

Спасибо, но это не то, что я хочу. Ваше выражение соответствует этим примерам (.aabb @ gmail.com | aa..bb @ gmail.com | aabb. @ Gmail.com), и это неправильно. – 2013-04-24 20:02:20

+0

Зачем вы используете '\ W'? – kay

0

В ответ на ваш другой вопрос:

Это ссылка на регулярное выражение документации: http://www.regular-expressions.info/ Существует больше помощи для конкретного языка, который вы используете, просто googleing «mylanguage регулярного выражения»

+0

Спасибо. Это было бы полезно. – 2013-04-24 20:03:05

1

Существует много документации для регулярных выражений, но вам нужно убедиться, что вы получаете один соответствующий особый аромат регулярного выражения, который имеет ваша среда. Да, есть многочисленные диалекты. То, что сказано, что «Освоение регулярных выражений», насколько мне известно, все еще является конечной ссылкой.

Что касается вашего конкретного вопроса, я бы, вероятно, использовать

^[a-z0-9](\.?[a-z0-9]){5,}@gmail\.com$ 

РИСКОВАННЫЙ: Я не проверял, если правила, которые вы дали правильные. Адреса электронной почты, как правило, не следует за ними.

+0

Спасибо, Кристофер, но выражение, которое вы написали '^ [a-z0-9] (\.? [a-z0-9]) {5,29} @gmail \ .com $ 'соответствует этому 'abcdefghijkl1.2.3.4.5.6.7.8[email protected]', и это не то, что я хочу , И именно поэтому я принял ответ Кей. – 2013-04-25 10:59:27

+0

Конечно, вы должны принять все, что считаете правильным, но, кроме того, что я не писал '{5,29}', так как я поставил это ограничение во втором тесте, мне любопытно, как Ответ Кая действительно отличается от моего. Насколько я могу судить, теперь он скопировал местную часть, которую я предложил, и его предыдущая версия не проверила наличие по крайней мере шести неточечных символов. –

1

RFC 2822 указывает, что представляет собой действительный адрес электронной почты, и это обсуждается here. Но, как отмечает эта страница, вы не можете просто принять ее, не прочитав и не понимая, что она делает.

У вас здесь преимущество, так как вы ожидаете, что адрес всегда заканчивается на @gmail.com, что уменьшает объем вашего регулярного выражения (вы можете разделить на @ и проверять только первую половину).

BTW, GMail не является gmail.com во всем мире - в Великобритании и Германии вы найдете googlemail.com.

Существует много документации по регулярным выражениям по всему Интернету, но вы должны быть уверены, что прочитаете, как библиотека/движок, который вы используете, обрабатывает вещи. Между реализациями существуют небольшие различия.

+0

Спасибо, эта информация действительно полезна. – 2013-04-24 20:10:41

0
/([a-zA-Z0-9]+)([\_\.\-{1}])?([a-zA-Z0-9]+)\@([a-zA-Z0-9]+)([\.])([a-zA-Z\.]+)/g 

Это регулярное выражение для адресов электронной почты, который будет проверять все адреса электронной почты.

  1. ([A-Za-Z0-9] +) - будет соответствовать для первого слова, которое может иметь AZ, AZ и 0-9
  2. ([_.- {1}]) - будет соответствовать _, -,. после первого слова
  3. ? - будет соответствовать 0 (false) и 1 (true) предыдущего токена.
  4. ([A-Za-Z0-9] +) - будет соответствовать для второго слова, которые могут иметь AZ, AZ и 0-9
  5. \ @ - будет соответствовать специальный символ @
  6. ([a-zA-Z0-9] +) - будет соответствовать имени, которое является доменным именем после @
  7. ([.]) - будет соответствовать.
  8. ([a-zA-Z.] +) - будет соответствовать последнему последнему слову идентификатора электронной почты, который может быть com, co.in, org и т. Д.

Но Gmail не позволяет другие специальные символы использовать так для Gmail адрес электронной почты, регулярное выражение будет легче, чем это и будет, как указано ниже:

/([a-zA-Z0-9]+)([\.{1}])?([a-zA-Z0-9]+)\@gmail([\.])com/g 
  1. ([а -zA-Z0-9] +) - будет соответствовать первому слову, которое может иметь az, AZ и 0-9
  2. ([. {1}]) - будет соответствовать. после первого слова
  3. ? - будет соответствовать 0 (false) и 1 (true) предыдущего токена.
  4. ([A-Za-Z0-9] +) - будет соответствовать для второго слова, которые могут иметь AZ, AZ и 0-9
  5. \ @ - будет соответствовать специальный символ @
  6. gmail - будет соответствовать имени gmail, которое является доменным именем после @
  7. ([.]) - будет соответствовать.
  8. ком - будет соответствовать итоговому последнему слову электронного идентификатора, который будет ком
1

Моим решения это ^[a-zA-Z][-_.a-zA-Z0-9]{5,29}@g(oogle)?mail.com$

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