我正在使用
if(preg_match('~@(semo\.edu|uni\.uu\.se|)$~', $email))
作为域名检查。
但是,我只需要检查电子邮件是否以上述域名结尾。例如,所有这些都需要被接受:
hello@semo.edu
hello@student.semo.edu
hello@cool.teachers.semo.edu
所以我猜我在@之后需要一些东西但是之前(这就像“任意随机字符串或空字符串”。任何可以帮助我的regexp-ninjas?
答案 0 :(得分:2)
([^@]*\.)?
有效。说明:它是空的,或者以句点结尾但不包含&符号的任何内容。因此student.cs.semo.edu
与普通semo.edu
匹配,但与me@notreallysemo.edu
匹配。所以:
~@([^@]*\.)?(semo\.edu|uni\.uu\.se)$~
请注意,我已从原始正则表达式中删除了最后一个|
。
答案 1 :(得分:0)
您可以使用[a-zA-Z0-9\.]*
来匹配任何或多个字符(字母,数字或点):
~@[a-zA-Z0-9\.]*(semo\.edu|uni\.uu\.se|)$~
答案 2 :(得分:0)
好.*
会匹配任何内容。但你实际上并不想这样。域名中有许多字符无效(例如空格)。相反,你想要更像这样的东西:
[\w.]*
我可能没有所有允许的角色,但这会让你[A-Za-z0-9_。]。我们的想法是,您在方形行李箱中列出所有允许的字符,然后使用*
来表示其中没有一个或多个。