我想检查一个电子邮件地址是否适合某种模式:
- 只有字母,数字和'。'或者' _'符号。
- 最后一部分(例如:.com)必须包含2到4个字母。
这是我的Reg Exp:'[a-zA-Z0-9._]+@[a-zA-Z0-9._]+.[a-zA-Z]{2,4}'
问题是它接受像%这样的符号,并且.commmm被接受为最后一部分。我怎么能解决它?
答案 0 :(得分:1)
主要问题实际上是两个:
.
,可以匹配任何符号(但是换行符)^
和$
,因此您可以匹配较大字符串中的子字符串。使用
'^[a-zA-Z0-9._]+@[a-zA-Z0-9._]+[.][a-zA-Z]{2,4}$'
^ ^^^ ^
当您将.
放入一对方括号时,您会匹配一个文字句点。
答案 1 :(得分:0)
我认为您只需要^
和$
来指定字符串的开头和结尾:
'^[a-zA-Z0-9.]+@[a-zA-Z0-9.]+.[a-zA-Z]{2,4}$'
您可能需要稍微调整规则,以便电子邮件和域无法以句点开头:
'^\w[a-zA-Z0-9.]*@\w[a-zA-Z0-9.]*.[a-zA-Z]{2,4}$'