Php 赛前解释
我不确定这段代码要做什么,请帮助我理解:Php 赛前解释,php,regex,Php,Regex,我不确定这段代码要做什么,请帮助我理解: if(preg_match('#^.{1,5}@(gmail|yahoo|aol|hotmail|msn|ymail)#i',$email)) return false; 正则表达式尸检: #^.{1,5}@(gmail|yahoo|aol|hotmail|msn|ymail)#i #-这是分隔符-您需要在开头和结尾使用其中一个分隔符,而不必是#(它只需要在结尾匹配)。最常见的分隔符是正斜杠(/)(下面我将说明为什么i在那里) ^-正则表达式的
if(preg_match('#^.{1,5}@(gmail|yahoo|aol|hotmail|msn|ymail)#i',$email)) return false;
正则表达式尸检:
#^.{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
ymail
-结束分隔符#
-这是一个“区分大小写”的修饰符,这意味着我们还将匹配i
/MSN
/gMail
YAhoO
myemail@gmail.com
(符号前面有6个字符)foo@bar.com
(列出的域均不存在)
但是,它确实符合:
12345@gmail.dk
!“#·%@MSN.COM
(
是任何符号)a@hotmail.de
foo@yahoo-email很烂。com
(因为我们不匹配“yahoo”后面的内容)
^在字符串开头断言位置
.{1,5}匹配任何字符(换行符除外) 量词:在1到5次之间,尽可能多的次数,根据需要回馈[贪婪]
@匹配字符@字面上
第一捕获群(gmail |雅虎| aol | hotmail | msn | ymail)
第一种选择:gmail
gmail按字面意思匹配gmail字符(不区分大小写) 第二种选择:雅虎
yahoo与yahoo字面上的字符匹配(不区分大小写) 第三种选择:aol
aol按字面意思匹配字符aol(不区分大小写) 第四种选择:hotmail
hotmail按字面意思与hotmail字符匹配(不区分大小写) 第五种选择:msn
msn按字面意思匹配字符msn(不区分大小写) 第六种选择:ymail
ymail按字面意思匹配字符ymail(不区分大小写)
i修饰符:不区分大小写。不区分大小写匹配(忽略[a-zA-Z]的大小写。)回答不错:)Thanks@pollux1er您可能希望检查编辑以查看其匹配的内容-这可能会有所帮助:)@Downvote-为什么?这是完全正确的信息。