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

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (468)

我正在制作一个html5表单,只希望用户使用.edu或.gov电子邮件地址注册。正则表达式会是什么样的?我知道必须在服务器端检查,但一次一步。

例:

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

我使用简化的RFC 2822兼容模:

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

演示:https://regex101.com/r/MCV07c/1/

主要的区别在于如何评估域部件。

<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> 

用户回答回答于

加上:

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

演示:https://www.regextester.com/94044

扫码关注云+社区

领取腾讯云代金券