我不确定这个代码试图做什么,请帮助我理解:
if(preg_match('#^.{1,5}@(gmail|yahoo|aol|hotmail|msn|ymail)#i',$email)) return false;
答案 0 :(得分:0)
正则表达式尸检:
#^.{1,5}@(gmail|yahoo|aol|hotmail|msn|ymail)#i
#
- 这是分隔符 - 您在开始和结束时需要其中一个分隔符,并且它不必是#
(它必须匹配在结束)。最常见的分隔符是正斜杠(/
)(为什么我会到达i
) ^
- 正则表达式的下一部分必须匹配字符串的开头 - 没有任何东西可以在它之前 .{1,5}
- 任意字符(.
)匹配1至5次 @
- 文字@
字符 (gmail|yahoo|aol|hotmail|msn|ymail)
- 文字字符串gmail
或yahoo
或aol
或hotmail
或msn
或{{1} } ymail
- 结束分隔符 #
- 这是一个“案例敏感”修饰符,这意味着我们还会匹配i
/ MSN
/ gMail
简而言之, 匹配
。
YAhoO
(我们在myemail@gmail.com
标志之前有6个字符)
@
(没有列出的域名)
然而,它 匹配:
foo@bar.com
12345@gmail.dk
(!"#¤%@MSN.COM
是任意符号)
.
a@hotmail.de
(因为我们与“雅虎”之后的内容不匹配)
答案 1 :(得分:-1)
^断言字符串开头的位置
。{1,5}匹配任何字符(换行符除外)
量词:1至5次,尽可能多次,根据需要回馈[贪心]
@匹配字符@字面上
第一个捕获组(gmail | yahoo | aol | hotmail | msn | ymail)
第一种选择:gmail
gmail字面匹配字符gmail(不区分大小写)
第二种选择:雅虎
雅虎字面上匹配字符雅虎(不区分大小写)
第三种选择:aol
aol字面匹配字符aol(不区分大小写)
第四种选择:hotmail
hotmail按字面意思匹配字符hotmail(不区分大小写)
第五种选择:msn
msn字面匹配字符msn(不区分大小写)
第六种选择:ymail
ymail字面匹配字符ymail(不区分大小写)
我修饰语:不敏感。不区分大小写的匹配(忽略[a-zA-Z]的情况)