如果提供2"@",则验证电子邮件的正则表达式失败

Lij*_*hew 1 c regex

我们已经遵循正则表达式来验证RFC 2822标准.

功能如下:

int isValidEmail(const char *email_id)
{
    /* Regular expression to validate email */
    const char *reg_exp =
        "[a-z0-9!#$%&'*+-/=?^_`{|}~]+(\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@([a-z0-9]([a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9]([a-z0-9-]*[a-z0-9])?$";

    regex_t preg;

    /* Compile the regular expression */
    if (regcomp(&preg, reg_exp, REG_EXTENDED|REG_NOSUB|REG_ICASE) != 0)
        return FAILURE;

    /* Execute the regex, 0 for success */
    if (regexec(&preg, email_id, (size_t)0, NULL, 0) != 0)
        return FAILURE;

    regfree(&preg);

    return SUCCESS;

} 
Run Code Online (Sandbox Code Playgroud)

但如果我提供"test @ test @ test.com"等电子邮件,电子邮件将被接受.

这个正则表达式有什么问题吗?

提前感谢您的帮助.

谢谢,Mathew Liju

Ama*_*osh 7

^在正则表达式的开头添加一个.它匹配行的开头.没有^正则表达式将匹配子字符串,test@test.com因为它是与正则表达式匹配的有效电子邮件ID.