计算电子邮件是否适合正则表达式?

Calculating if an email fits within a regex?

所以我想确定是否有人在使用我们系统生成的临时电子邮件。如果用户尝试使用社交帐户(Twitter / Facebook)登录,但他们拒绝访问电子邮件,我会为我们的系统生成一封电子邮件,即 AccountID@facebook.com 或 AccountID@twitter.com 例如123456789@facebook.com。在用户输入真实电子邮件之前,这是一封临时电子邮件。我正在尝试使用正则表达式对此进行比较。

    if (preg_match("/^[0-9]@twitter.com/", Auth::user()->email, $matches)) {
    }

但是我认为我的正则表达式不正确。如何检查字符串的格式是否为 N 位数后跟 @twitter.com 或 @facebook.com

How would one check if the format of a string is N Number of digits followed by @twitter.com or @facebook.com

您可以使用这个正则表达式:

'/^\d+@(?:facebook|twitter)\.com$/'

您正在使用 ^[0-9]@,这将只允许在开始时使用一位数字。此外 DOT 是正则表达式中需要转义的特殊字符。另请注意在您的锚点中使用结束锚点 $ 以避免匹配不需要的输入。

您忘记将 ID 设置为多个号码:

    if (preg_match("/^[0-9]+@(twitter|facebook)\.com/", Auth::user()->email, $matches)) 
    {
       //Your code here
    }