Символы отрицания для электронной почты Regex

Я пытаюсь написать основное регулярное выражение для проверки адреса электронной почты. Для этого конкретного случая я пытаюсь убедиться, что введенная строка содержит только буквы, цифры, "." а также "@". Или, другими словами, я уверен, что он не включает такие символы, как £&¬! и т.п.

Я попытался получить версию NOT этого [[:alnum:].@]+, Чтобы он выделил символ, не входящий в этот набор, но я не смог заставить его работать. Я также пробовал символы, не входящие в [\W.@]+ (Символ. Должен быть экранирован, но stackru удаляет \ из этого поста), но \ W все еще выбирает. и символы @.

2 ответа

Решение

Вы можете...

  • ... соответствовать положительным значениям (ваше регулярное выражение плюс привязки, чтобы убедиться, что оно соответствует всей тестовой строке)
    (^[[:alnum:].@]+$)
  • ... соответствует негативам, что означает, что в какой-то момент появляется недопустимый символ
    ([^[:alnum:].@])

... и проверьте, не было ли совпадения. В первом случае это означает "хорошо", во втором "провал".

Существуют диалекты регулярных выражений, которые не поддерживают классы символов posix, в этом случае замените [:alnum:] с 0-9a-zA-Z,

Существует множество примеров шаблонов регулярных выражений для адресов электронной почты. Вот очень простой / наивный, который допускает только буквенно-цифровые и точки (и один @). Этому не важно, если доменная часть находится в допустимом формате (то есть пропущены такие вещи, как "abc@gmail......com"):

^[A-Za-z0-9.]+@[A-Za-z0-9.]+$
Другие вопросы по тегам