Ищете регулярное выражение для соответствия адресу Gmail Plus
Я использую это в настоящее время:
/^(.*)\+(.*)@gmail.com/
(Я записываю текст до и после знака плюс в группе)
и это работает в большинстве случаев, таких как test+test@gmail.com
но падает, если я пытаюсь соответствовать, скажем test+++test@gmail.com
Повторные знаки +, кажется, облажались.
Любая помощь приветствуется.
Спасибо
6 ответов
Вам нужно экранировать знак +: /^(.+?)\++(.+?)@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