我现在已经尝试了近一个小时了,而且在没有任何帮助或解释的情况下,我无法进一步了解它。我之前使用过正则表达式,但只使用了非常简单或已经制作的正则表达式。
这一次,我试图找出如何编写实现以下目标的正则表达式:
电子邮件地址必须包含一个@字符,并且@字符后面至少有一个点(。)至少一个位置。
到目前为止,这是我能够解决的问题,它仍然匹配电子邮件地址,例如,有多个@符号。
.*?@?[^@]*\.+.*
如果你能告诉我如何构造一个正则表达式来检查单个@和至少一个句点@之后的一个或多个空格,那将会很有帮助。如果您可以分解正则表达式并解释每个位的作用,那将非常有用。
我想暂时保持简单,因此它不一定是一个完整的超准确的电子邮件验证表达。
答案 0 :(得分:3)
电子邮件地址必须包含一个@字符
不,他们没有。没有“@”字符的电子邮件地址完全有效。在IP地址之前具有多个“@”字符的电子邮件地址完全有效(只要1以外的所有字符都在ADDR_SPEC之外或在邮箱名称中引用/转义)。
我怀疑您没有尝试验证电子邮件地址,而是ADDR_SPEC。由MátéSafranka链接的答案描述了如何验证ADDR_SPEC(不是电子邮件地址)。除非您希望验证没有有效的互联网MX记录的记录,否则不止一个'@'更可能是一个错字而不是一个有效的地址....
/[a-z0-9\._%+!$&*=^|~#%'`?{}/\-]+@([a-z0-9\-]+\.){1,}([a-z]{2,16})/
答案 1 :(得分:3)
在ClasG的评论的帮助下,我现在有一个相当简单和适合我的问题的正则表达式。为了能够学习将来可能会遇到这个问题的正则表达式,我会在下面打破这个表达。
表达式:^[^@]+@[^@]+\.[^@]+$
^
匹配字符串的开头(或多行时的行)[^@]
匹配任何不在此集合中的字符(即不是“@”)+
匹配一个或多个@
匹配“@”字符[^@]
匹配此集合中不存在的任何字符+
匹配一个或多个\.
匹配“。” (句号)(反斜杠逃脱句号)[^@]
匹配此集合中不存在的任何字符+
匹配一个或多个$
匹配字符串的结尾(如果是多行,则匹配行)用简单的语言: