我正在尝试编写regexp来验证电子邮件地址,我需要在“@”符号之前接受带有字母,数字,下划线,句号,连字符的地址以及之后的相同集合,但是只有一个'@ '登录这个地址。
目前我坚持这一点:/^[\w\.\-@]*$/i
。我不能让它只接受一个'@'符号:{1}
在集合中不起作用,而我找到的其他方法也不行。那么在集合中匹配一个字符的方法是什么?
答案 0 :(得分:1)
您不能在字符类中使用量词(即[@{1}]
将匹配@
,{
,1
或}
)。你需要的是“展开”你的角色类,将它分成两部分,取出你想要限制的角色,在两部分之间只出现一次:
/^[\w.-]+@[\w.-]+$/
请注意,此表达式至少需要3个字符,但这应该没问题,因为电子邮件地址不能少于3个字符。
此外,/i
不区分大小写的修饰符是多余的,因为\w
匹配大写和小写字母。
请参阅regex demo。