Я пытаюсь создать валидатор электронной почты, и я хочу сделать команду, чтобы проверить, что пользовательский ввод (электронная почта, которую вводит пользователь) содержит ТОЛЬКО ОДИН ИЗ «@» и «.». Пример: имя@@.com будет недопустимым.
function validateEmail(){
let enterEmail = prompt("Enter your email to see if it is valid");
let removeSpace = (enterEmail.trim());
let s = removeSpace.indexOf('@');
let lastS = removeSpace.lastIndexOf('.');
if (s > 1 && lastS > 1) {
Output("emailOutput", "The Email you have entered is valid");
}
else {
Output("emailOutput", "The Email you have entered is invalid");
}
}
Просто сопоставьте регулярное выражение. Обратите внимание, что действующий адрес электронной почты может иметь более одного «.» в нем, поэтому ограничение этого персонажа было бы плохой идеей. На самом деле лучше не пытаться делать что-то большее, чем «stuff@stuff», потому что синтаксис адреса электронной почты чрезвычайно сложен, и даже синтаксически правильный адрес может быть совершенно неправильным.
Я согласен с @Pointy - я видел и опытный людей, которые слишком много раз неправильно проверяли электронные письма. Один из самых распространенных, который затрагивает лично меня, — это сделать +
недействительным, а это не так. Но слишком часто люди отказываются печатать '
, поэтому таких, как О'Брайен, исключают из регистрации. .+@.+\..+
должно быть достаточно, чтобы покрыть действительность электронной почты. И даже в этом случае, вероятно, следует просто выдать предупреждение, а не останавливать отправку, поскольку электронное письмо формата email@localdomain
— это действительный.
Если вы пытаетесь убедиться, что адрес электронной почты правильный, просто отправьте пользователю электронное письмо с подтверждением с указанным адресом электронной почты. В остальном html5 также имеет тип электронной почты, поэтому нет необходимости проверять его вручную.
let s = "mail@@@.com"
s.match(/@/g).length
Длина здесь будет количеством вхождений в строке
вы можете использовать:
const isEmailValid = (email) => {
const isValid = /\S+@\S+\.\S+/.test(email);
return isValid;
}
Я понимаю, что это не то, о чем вы спрашиваете (и может быть неактуально), но проверка адреса электронной почты в браузере возможна с помощью:
<input type = "email" />
который изящно деградирует до
<input type = "text" />
Возможный дубликат Как проверить адрес электронной почты в JavaScript?