Jump to content
  • 0

Регулярка. Исключить .. из строки


volkoff
 Share

Question

Есть простенькая регулярка на проверкку мейла

[a-z0-9_\.\-]{1,128}[@]\w+[.]\w+

Собсна, нам интересна часть до собаки

[a-z0-9_\.\-]

Сейчас это проверка на символы и длину строки 1-128.

 

Требуется сделать так, чтоб не пропускало 2 точки подряд. 

Как это сделать регуляркой ? 

(Вариант доп. функции, которая будет искать в строке .. не подходит)

 

Язык: python

 

Есть решение данной задачи ? 

Спасибо

Edited by volkoff
Link to comment
Share on other sites

7 answers to this question

Recommended Posts

  • 0
>>> regexp = r'^[a-z0-9_\-]+(\.[a-z0-9_\-]+)*$'>>> re.search(regexp, 'qwe.qwe')<_sre.SRE_Match object at 0x7fa54bbb60a8>>>> re.search(regexp, 'qwe..qwe')>>> re.search(regexp, 'qwe.qwe.')>>> re.search(regexp, '.qwe.qwe')>>>

Кстати, регулярка кажется плохой. Например, не пропустит что-нибудь типа mail@example.com.ru

А, нет, прошу прощения, показалось.

А, нет, не показалось.

>>> import re>>> regexp = r'[a-z0-9_\.\-]{1,128}[@]\w+[.]\w+'>>> re.search(regexp, 'qwe@qwe.qwe.')<_sre.SRE_Match object at 0x7f236545f370>

Вот так [@] и вот так [.] делать бесмысленно.

Link to comment
Share on other sites

  • 0
или как то так ?

Не знаю. А чем мой вариант не по нраву?

Кстати, а зачем r перед регуляркой ?

Это называется вроде бы raw string. Вот пример

>>> import re>>> a = 'qwe\\asd'>>> re.search('(\\.*)', a).groups()('',)>>> re.search(r'(\\.*)', a).groups()('\\asd',)>>>

Чувствуете разницу?

Link to comment
Share on other sites

  • 0

Не, ваш вариант крутой, только он убивает ограничение на 128 символов до собаки

>>> regexp = r'^[a-z0-9_\-]+(\.[a-z0-9_\-]+)*

даже если сделать 

>>> regexp = r'^[a-z0-9_\-]+(\.[a-z0-9_\-]+){1,128}

то все равно до точки первый фрагмент может быть бесконечным

 

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

Edited by volkoff
Link to comment
Share on other sites

  • 0

Т.С., а ограничение на 128 символов - это обязательно? Есть же вроде встроенное решение для таких целей у python, не? Точнее оно вроде как устанавливается дополнительно.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy