如何使用正则表达式限制域名?

时间:2018-08-21 18:38:58

标签: regex html5 email design-patterns input

我正在制作html5表单,只希望用户使用.edu或.gov电子邮件地址进行注册。正则表达式看起来像什么?我知道也必须在服务器端对其进行检查,但一次只能检查一次。

示例:

<input type="email" pattern="[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}$" />

2 个答案:

答案 0 :(得分:0)

How to validate an email address in JavaScript?的基础上,我使用simplified RFC 2822 compatible pattern提出了这一点:

[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@((?!-)[A-Za-z0-9-]{0,62}[A-Za-z0-9]\.)+(edu|gov)

Regex Demo

主要区别在于域部分的评估方式。我是从以前的答案中摘录的。

<form action="javascript:console.log('ok')">
<input type="text" name="domain" 
pattern="[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@((?!-)[A-Za-z0-9-]{0,62}[A-Za-z0-9]\.)+(edu|gov)" title="Sorry, only email addresses from .edu and .org domains are allowed.">
<input type="submit">
</form> 

答案 1 :(得分:0)

添加此内容:

^[a-zA-Z0-9_.+-]+@(?:(?:[a-zA-Z0-9-]+\.)?[a-zA-Z]+\.)?(domain|domain2)\.(edu|gov)$

Demo