Ищете регулярное выражение для соответствия адресу Gmail Plus

Я использую это в настоящее время:

/^(.*)\+(.*)@gmail.com/

(Я записываю текст до и после знака плюс в группе)

и это работает в большинстве случаев, таких как test+test@gmail.comно падает, если я пытаюсь соответствовать, скажем test+++test@gmail.com

Повторные знаки +, кажется, облажались.

Любая помощь приветствуется.

Спасибо

6 ответов

Решение

(.*?)\++(.*?)@gmail.com должно сработать.

Вам нужно экранировать знак +: /^(.+?)\++(.+?)@gmail.com/

РЕДАКТИРОВАТЬ: ваш пост был отформатирован: ваш + уже экранирован

[a-zA-Z0-9]{1,}[\+]{0,}[a-zA-Z0-9]{0,}@gmail.com

Вы не правильно обнаруживаете +. Используйте что-то вроде этого: ^([^+]+)[+]+([^+]+)@gmail.com

Если вам не нужно проверять первую часть адреса (перед любым знаком "+"), вы можете воспользоваться /^([^+]+)(:?+[^+]*)*@gmail.com/ только к первой части.

Возможно, вы захотите сделать более точную проверку, чтобы убедиться, что это "действительный" формат учетной записи, в соответствии с правилами, установленными RFC.

редактировать - звездочки делали смелые заявления.

Вы можете использовать [] с ^ (все символы, кроме...), например

echo 'aaa++++bbb@gmail.com' | perl -p -e 's/^([^\+]*)\+(.*)@gmail.com/$1/'

Думаю, это можно упростить прикосновением:

ЕСЛИ вы знаете адрес, который ищете, и хотите сопоставить свой адрес независимо от того, есть ли на нем тег "плюс":

bignev(\+.*)*@gmail.com

Если вам нужны только те, которые отмечены тегом "плюс":

bignev(\+.*)@gmail.com

Если у вас есть собственный домен:

bignev(\+.*)*@everton.com

Или конкретно ответить на исходный пост:

.*(\+.*)@gmail.com
Другие вопросы по тегам