Регулярные выражения (экспрессия для ввода только почты @gmail)


у меня есть страница, которая отправляет почту при выполнении определенной деятельности... Моя страница отправляет почту только на учетные записи @gmail, если у вас есть другая учетная запись, например @hotmail почта никогда не придет к вам, я исследую, потому что это происходит, но в качестве превентивной или мгновенной меры я думал о каком-то регулярном выражении, чтобы проверить, что почта, которую пользователь пытается зарегистрировать, Если или если @gmail, выражение, которое у меня есть до сих пор, это: (не работает) expresion_correo= /\w+@+[gmail]\w+\.+[a-z]/;

это выражение не работает, так как он проверяет меня, например, это письмо [email protected]

Author: Fran Schiavone, 2021-08-25

3 answers

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

[^@ \t\r\n]+@gmail\.com

Но если вы хотите, чтобы что-то еще шло после @gmail, то есть gmail.org или gmail. некоторыйдомен Вы можете использовать этот:

[^@ \t\r\n]+@gmail+\.[^@ \t\r\n]+

Регулярные выражения могут быть сделаны несколько сложными, когда у нас нет опыта. Такие инструменты: I Hate Regex довольно облегчили мне понимание их динамически.

  2
Author: Levi Arista, 2021-08-25 18:46:43

Использование регулярных выражений-лучший способ достичь этого:

Попробуйте реализовать эту функцию:

Отредактировано:

Проверка только GMAIL

function isValidEmail(email) {
  const re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
  return re.test(String(email).toLowerCase());
}
function validateEmail(email) {
    const re = /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
    return re.test(String(email).toLowerCase());
}

Вот пример регулярного выражения, которое принимает unicode:

const re = /^(([^<>()[\]\.,;:\s@\"]+(\.[^<>()[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/i;

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

Вот пример того, что предыдущий в действии:

function validateEmail(email) {
  const re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
  return re.test(email);
}

function validate() {
  const $result = $("#result");
  const email = $("#email").val();
  $result.text("");

  if (validateEmail(email)) {
    $result.text(email + " is valid :)");
    $result.css("color", "green");
  } else {
    $result.text(email + " is not valid :(");
    $result.css("color", "red");
  }
  return false;
}

$("#email").on("input", validate);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<label for=email>Enter an email address:</label>
<input id="email">
<h2 id="result"></h2>
  0
Author: Hernando Abella, 2021-08-25 16:33:24
Замечания

Регулярное выражение, которое вы используете, - \w+@+[gmail]\w+\.+[a-z]. Добавлю вам несколько замечаний:

  • [gmail] обнаруживает любой символ внутри квадратных скобок, он не обнаружит 'gmail', но один символ, будь то g, m, i или l. я избыточен: он не будет захватывать все сразу, только один символ.
  • у вас есть \w+ после gmail, это заставит существовать хотя бы один символ сразу после 'gmail'.
  • [a-z] обнаруживает только один символ в нижнем регистре
  • @+ обнаруживает 1 или более последовательных ' @ '
  • \w+ обнаруживает только слова без специальных символов, таких как: '- 'или'. ' ... '[email protected]' потерпит неудачу
Рекомендация

Вы можете дословно написать в конце tu.regex@gmail\.com, где tu.regex будет подлежать изменению.

  0
Author: Alfredo Maussa, 2021-08-25 16:33:55