我如何为 html 添加特定的电子邮件验证

How can i add specific email validation for html

我想知道如何在 html 中只允许 @gmail.com 和 @yahoo.com 进行我的电子邮件验证。我知道

唯一的方法是 RegExp

  1. 如果您使用框架 (angular/react/vue),他们有自己的(兼容的第三方)库来处理表单验证。
  2. 如果您使用的是纯 JS,您可以在输入中添加 onchange 事件并使用所需的正则表达式测试输入,或者在提交表单之前测试输入。

您将需要正则表达式

/^[a-z][a-z0-9_.]*@(gmail|yahoo).com$/gm

更多关于 Javascript 的正则表达式:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions

好的,这不是实现此目的的最佳方法,最好的方法是在后端使用它,并使用 PHP 电子邮件验证过滤器。

HTML

<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title></title>
<link rel="stylesheet" href="/css/master.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"> 
</script>
</head>
<body>
<form id="emailForm" action="" method="post">
<label for="email">E-mail</label><br>
<input id="email" type="email" name="email" placeholder="Please enter your 
email" value="">
<button onclick="validate();" type="button" name="button">Submit</button>
</form>
</body>
</html>

内联javascript,以后可以携带,留着html下测试用

<script type="text/javascript">
function validate(){
var email = $('#email').val();

if (email.length == 0) {
  window.alert("you didn't enter an email");
}

if (!email.includes('@')) {
  window.alert("you mail is unvalid");
}

var emailHost = email.substr((-1)*(email.length - email.indexOf('@') - 1));

var allowedDomains = ["gmail.com","hotmail.com","yahoo.com"];

var inAllowed = false;
for(i=0;i<allowedDomains.length;i++){
  if (allowedDomains[i] == emailHost) {
    inAllowed = true;
  }
}

if (!inAllowed) {
  window.alert("your e-mail hosting not supported");
}else { //submit form here
  window.alert("success");
  $('#emailForm').submit();
}

}
</script>

如果使用 php

,后端会从 $_POST 接收电子邮件
<?php

var_dump($_POST);

?>