我有以下电子邮件地址的正则表达式条件:
var value = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9]+.[a-zA-Z]{2,}$/
但是我不希望名称以句号(.)或下划线(_)或连字符(-)和开始或结束这个特殊字符应该只包含在中间
例如:
_name.name_@email.com Invalid
-name.name-@email.com Invalid
name.@email.com Invalid
name_@email.com Invalid
name-@email.com Invalid
.name@email.com Invalid
_name@email.com Invalid
-name@email.com Invalid
name.name@email.com Valid
name_name@email.com Valid
name-name@email.com Valid
我正在努力找出解决办法,并在这个过程中学习。
可以使用
var value = /^[a-zA-Z0-9]+(?:[._-][a-zA-Z0-9]+)*@[a-zA-Z0-9]+.[a-zA-Z]{2,}$/
细节:
^
-字符串 起始[a-zA-Z0-9]+
-一个或多个字母/数字(?:[._-][a-zA-Z0-9]+)*
-.
/_
/-
的零次或多次出现,然后是一个或多个字母/数字@
- a@
char[a-zA-Z0-9]+
-一个或多个字母/数字.
- a点[a-zA-Z]{2,}
-两个或多个字母$
-字符串结束
查看regex演示
Regex:^[a-zA-Z0-9_%+-]+(.?[a-zA-Z0-9_%+–]+)*@[a-zA-Z0-9]+(?:[_-][a-zA-Z0-9]+)*.[a-zA-Z]{2,6}$
是一个工作的正则表达式,满足以下条件
- 用户名:字母数字或
. _ % + –
这5个特殊字符 - 邮件服务器:中间是字母数字或
–
连字符或_
下划线。 - 顶级域名:只包含2-6个字母字符
在这个正则表达式中以@[a-zA-Z0-9]+(?:[_-][a-zA-Z0-9]+)*
开头的部分用于邮件服务器验证
(?:[_-][a-zA-Z0-9]+)*
- 0个或多个下划线或连字符字符,然后一个或多个字母/数字
[_-]匹配列表
中的单个字符