Регулярные выражения (экспрессия для ввода только почты @gmail)
у меня есть страница, которая отправляет почту при выполнении определенной деятельности... Моя страница отправляет почту только на учетные записи @gmail, если у вас есть другая учетная запись, например @hotmail почта никогда не придет к вам, я исследую, потому что это происходит, но в качестве превентивной или мгновенной меры я думал о каком-то регулярном выражении, чтобы проверить, что почта, которую пользователь пытается зарегистрировать, Если или если @gmail, выражение, которое у меня есть до сих пор, это: (не работает)
expresion_correo= /\w+@+[gmail]\w+\.+[a-z]/;
это выражение не работает, так как он проверяет меня, например, это письмо [email protected]
3 answers
Я думаю, вы могли бы попробовать это регулярное выражение, Если вы хотите, чтобы они были только письмами с @gmail.com
[^@ \t\r\n]+@gmail\.com
Но если вы хотите, чтобы что-то еще шло после @gmail, то есть gmail.org или gmail. некоторыйдомен Вы можете использовать этот:
[^@ \t\r\n]+@gmail+\.[^@ \t\r\n]+
Регулярные выражения могут быть сделаны несколько сложными, когда у нас нет опыта. Такие инструменты: I Hate Regex довольно облегчили мне понимание их динамически.
Использование регулярных выражений-лучший способ достичь этого:
Попробуйте реализовать эту функцию:
Отредактировано:
Проверка только 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>
Замечания
Регулярное выражение, которое вы используете, - \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
будет подлежать изменению.