一尘不染

如何将PHP的eregi更改为preg_match

php

我需要帮助,下面是一个很小的非常基本的正则表达式,用于对电子邮件进行某种程度的验证,我的确意识到它不能发挥最大的作用,但就我的需求而言,现在可以了。

它当前使用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';
    }
}

阅读 482

收藏
2020-05-29

共1个答案

一尘不染

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';
    }
}

您最初的尝试不起作用的原因是因为它试图^用作分隔符,但是(显然)没有找到^与正则表达式末尾匹配的字符。

2020-05-29