Jas*_*vis 18 php email pcre posix-ere
可能重复:
如何在PHP中将ereg表达式转换为preg?
我需要帮助,下面是一个很小的非常基本的正则表达式,有点验证一个电子邮件,我确实认为它不是最好的工作,但我的需求现在还可以.
它目前使用PHP的eregi函数,php.net说它现在是折旧函数,我应该使用preg_match,只需用preg_match替换erei不起作用,有人可以告诉我如何让它工作吗?
function validate_email($email) {
if (!eregi("^[[:alnum:]][a-z0-9_.-]*@[a-z0-9.-]+\.[a-z]{2,4}$", $email)) {
echo 'bad email';
} else {
echo 'good email';
}
}
function validate_email($email) {
if (!preg_match("^[[:alnum:]][a-z0-9_.-]*@[a-z0-9.-]+\.[a-z]{2,4}$", $email)) {
echo 'bad email';
} else {
echo 'good email';
}
}
Run Code Online (Sandbox Code Playgroud)
Amb*_*ber 28
Perl风格的正则表达式模式总是需要分隔.字符串中的第一个字符被认为是分隔符,所以像这样:
function validate_email($email) {
if (!preg_match("/^[[:alnum:]][a-z0-9_.-]*@[a-z0-9.-]+\.[a-z]{2,4}$/i", $email)) {
echo 'bad email';
} else {
echo 'good email';
}
}
Run Code Online (Sandbox Code Playgroud)
你的初始尝试不起作用的原因是因为它试图^用作分隔符,但(显然)发现^正则表达式的结尾没有匹配.
Pet*_*ley 10
你需要改变三件事
i标志.否则,其余的看起来与PCRE兼容(是的,那是多余的= P)
"/^[a-z0-9][a-z0-9_.-]*@[a-z0-9.-]+\.[a-z]{2,4}$/i"
Run Code Online (Sandbox Code Playgroud)