Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php @symbol之前电子邮件地址的正则表达式_Php_Regex - Fatal编程技术网

Php @symbol之前电子邮件地址的正则表达式

Php @symbol之前电子邮件地址的正则表达式,php,regex,Php,Regex,我想要一个正则表达式来检查用户电子邮件地址的第一部分(在@symbol之前) 只有字符、数字和“.”符号有效。我尝试了一些方法,但还不够 这是我的表达方式,但问题是用户可以提交多个点,如“示例..测试”,“ex..amp..le” 编辑:我不想允许下划线或类似的内容 ^(?=[^.]*\.[^.]*$)[a-zA-Z0-9.]+$ 您可以试试。这将只允许一个 $re = "/^(?=[^.]*\\.[^.]*$)[a-zA-Z0-9.]+$/m"; $str = "asdasd.asdasd.

我想要一个正则表达式来检查用户电子邮件地址的第一部分(在@symbol之前)

只有字符、数字和“.”符号有效。我尝试了一些方法,但还不够

这是我的表达方式,但问题是用户可以提交多个点,如“示例..测试”,“ex..amp..le”

编辑:我不想允许下划线或类似的内容

^(?=[^.]*\.[^.]*$)[a-zA-Z0-9.]+$
您可以试试。这将只允许一个

$re = "/^(?=[^.]*\\.[^.]*$)[a-zA-Z0-9.]+$/m";
$str = "asdasd.asdasd.\nasdsad.asdasd\nasdsadsad.asdasd.sa.d.";

preg_match_all($re, $str, $matches);
您可以试试。这将只允许一个

$re = "/^(?=[^.]*\\.[^.]*$)[a-zA-Z0-9.]+$/m";
$str = "asdasd.asdasd.\nasdsad.asdasd\nasdsadsad.asdasd.sa.d.";

preg_match_all($re, $str, $matches);
您可以试试。这将只允许一个

$re = "/^(?=[^.]*\\.[^.]*$)[a-zA-Z0-9.]+$/m";
$str = "asdasd.asdasd.\nasdsad.asdasd\nasdsadsad.asdasd.sa.d.";

preg_match_all($re, $str, $matches);
您可以试试。这将只允许一个

$re = "/^(?=[^.]*\\.[^.]*$)[a-zA-Z0-9.]+$/m";
$str = "asdasd.asdasd.\nasdsad.asdasd\nasdsadsad.asdasd.sa.d.";

preg_match_all($re, $str, $matches);
试试这个:

"/^[a-zA-Z0-9]+(\.[a-zA-Z0-9_-]+)*$/"
必须支持
连字符
下划线
,并且电子邮件必须首先以
字母数字字符开头

尝试以下方法:

"/^[a-zA-Z0-9]+(\.[a-zA-Z0-9_-]+)*$/"
必须支持
连字符
下划线
,并且电子邮件必须首先以
字母数字字符开头

尝试以下方法:

"/^[a-zA-Z0-9]+(\.[a-zA-Z0-9_-]+)*$/"
必须支持
连字符
下划线
,并且电子邮件必须首先以
字母数字字符开头

尝试以下方法:

"/^[a-zA-Z0-9]+(\.[a-zA-Z0-9_-]+)*$/"
必须支持
连字符
下划线
,并且电子邮件必须首先以
字母数字字符开头

您的具体案例 要禁止重复字符,可以使用否定断言:

if (preg_match('/(?!.*\.\.)^[a-z0-9.]+$/', $inbox_name)) {
    // valid, probably
}
但这允许将句点作为第一个字符,这在电子邮件地址中是不允许的,因此您必须进一步细化它:

if (preg_match('/(?!.*\.(\.|$))^[a-z0-9][a-z0-9.]*$/', $inbox_name)) {
    // valid, probably
}
说明:

  • 不允许在一段时间后再加上另一段时间或课程结束
  • 字符串必须以字母或数字开头
  • 起始字符后面可以是字母、数字或句点
  • 旧答案 使用而不是尝试滚动您自己的电子邮件地址验证:

    var_dump(filter_var('ex..ample@example.org', FILTER_VALIDATE_EMAIL)); 
    // bool(false)
    
    var_dump(filter_var('ex.ample@example.org', FILTER_VALIDATE_EMAIL)); 
    // string("ex.ample@example.org")
    
    之后,在您尝试发送电子邮件之前,您仍然无法保证电子邮件地址实际有效(即使这样,也可能是误报)

    我不想允许下划线之类的东西

    ^(?=[^.]*\.[^.]*$)[a-zA-Z0-9.]+$
    
    那论点简直是无稽之谈;它们在电子邮件地址中是有效的,除了个人喜好之外,你真的没有理由阻止它。

    你的具体情况 要禁止重复字符,可以使用否定断言:

    if (preg_match('/(?!.*\.\.)^[a-z0-9.]+$/', $inbox_name)) {
        // valid, probably
    }
    
    但这允许将句点作为第一个字符,这在电子邮件地址中是不允许的,因此您必须进一步细化它:

    if (preg_match('/(?!.*\.(\.|$))^[a-z0-9][a-z0-9.]*$/', $inbox_name)) {
        // valid, probably
    }
    
    说明:

  • 不允许在一段时间后再加上另一段时间或课程结束
  • 字符串必须以字母或数字开头
  • 起始字符后面可以是字母、数字或句点
  • 旧答案 使用而不是尝试滚动您自己的电子邮件地址验证:

    var_dump(filter_var('ex..ample@example.org', FILTER_VALIDATE_EMAIL)); 
    // bool(false)
    
    var_dump(filter_var('ex.ample@example.org', FILTER_VALIDATE_EMAIL)); 
    // string("ex.ample@example.org")
    
    之后,在您尝试发送电子邮件之前,您仍然无法保证电子邮件地址实际有效(即使这样,也可能是误报)

    我不想允许下划线之类的东西

    ^(?=[^.]*\.[^.]*$)[a-zA-Z0-9.]+$
    
    那论点简直是无稽之谈;它们在电子邮件地址中是有效的,除了个人喜好之外,你真的没有理由阻止它。

    你的具体情况 要禁止重复字符,可以使用否定断言:

    if (preg_match('/(?!.*\.\.)^[a-z0-9.]+$/', $inbox_name)) {
        // valid, probably
    }
    
    但这允许将句点作为第一个字符,这在电子邮件地址中是不允许的,因此您必须进一步细化它:

    if (preg_match('/(?!.*\.(\.|$))^[a-z0-9][a-z0-9.]*$/', $inbox_name)) {
        // valid, probably
    }
    
    说明:

  • 不允许在一段时间后再加上另一段时间或课程结束
  • 字符串必须以字母或数字开头
  • 起始字符后面可以是字母、数字或句点
  • 旧答案 使用而不是尝试滚动您自己的电子邮件地址验证:

    var_dump(filter_var('ex..ample@example.org', FILTER_VALIDATE_EMAIL)); 
    // bool(false)
    
    var_dump(filter_var('ex.ample@example.org', FILTER_VALIDATE_EMAIL)); 
    // string("ex.ample@example.org")
    
    之后,在您尝试发送电子邮件之前,您仍然无法保证电子邮件地址实际有效(即使这样,也可能是误报)

    我不想允许下划线之类的东西

    ^(?=[^.]*\.[^.]*$)[a-zA-Z0-9.]+$
    
    那论点简直是无稽之谈;它们在电子邮件地址中是有效的,除了个人喜好之外,你真的没有理由阻止它。

    你的具体情况 要禁止重复字符,可以使用否定断言:

    if (preg_match('/(?!.*\.\.)^[a-z0-9.]+$/', $inbox_name)) {
        // valid, probably
    }
    
    但这允许将句点作为第一个字符,这在电子邮件地址中是不允许的,因此您必须进一步细化它:

    if (preg_match('/(?!.*\.(\.|$))^[a-z0-9][a-z0-9.]*$/', $inbox_name)) {
        // valid, probably
    }
    
    说明:

  • 不允许在一段时间后再加上另一段时间或课程结束
  • 字符串必须以字母或数字开头
  • 起始字符后面可以是字母、数字或句点
  • 旧答案 使用而不是尝试滚动您自己的电子邮件地址验证:

    var_dump(filter_var('ex..ample@example.org', FILTER_VALIDATE_EMAIL)); 
    // bool(false)
    
    var_dump(filter_var('ex.ample@example.org', FILTER_VALIDATE_EMAIL)); 
    // string("ex.ample@example.org")
    
    之后,在您尝试发送电子邮件之前,您仍然无法保证电子邮件地址实际有效(即使这样,也可能是误报)

    我不想允许下划线之类的东西

    ^(?=[^.]*\.[^.]*$)[a-zA-Z0-9.]+$
    
    那论点简直是无稽之谈;它们在电子邮件地址中是有效的,除了个人喜好之外,你真的没有理由阻止它。

    你可以试试这个

    '/^[a-zA-Z0-9]+\.?[a-zA-Z0-9]+@/'
    
    以下是一些输出:

    $a = "sf..sf@g.com"
    var_dump( preg_match('/^[a-zA-Z0-9]+\.?[a-zA-Z0-9]+@/', $a));
    int(0)
    $b = "sf.sf@g.com";
    var_dump( preg_match('/^[a-zA-Z0-9]+\.?[a-zA-Z0-9]+@/', $b));
    int(1)
    $c = "sff.@g.com";
    var_dump( preg_match('/^[a-zA-Z0-9]+\.?[a-zA-Z0-9]+@/', $c));
    int(0)
    $d = "sff..@g.com";
    var_dump( preg_match('/^[a-zA-Z0-9]+\.?[a-zA-Z0-9]+@/', $d));
    int(0)
    $e = "adeade@g.com";
    var_dump( preg_match('/^[a-zA-Z0-9]+\.?[a-zA-Z0-9]+@/', $e));
    int(1)
    $f = "a.b.c@g.com";
    var_dump( preg_match('/^[a-zA-Z0-9]+\.?[a-zA-Z0-9]+@/', $f));
    int(0)
    
    你可以试试这个

    '/^[a-zA-Z0-9]+\.?[a-zA-Z0-9]+@/'
    
    以下是一些输出:

    $a = "sf..sf@g.com"
    var_dump( preg_match('/^[a-zA-Z0-9]+\.?[a-zA-Z0-9]+@/', $a));
    int(0)
    $b = "sf.sf@g.com";
    var_dump( preg_match('/^[a-zA-Z0-9]+\.?[a-zA-Z0-9]+@/', $b));
    int(1)
    $c = "sff.@g.com";
    var_dump( preg_match('/^[a-zA-Z0-9]+\.?[a-zA-Z0-9]+@/', $c));
    int(0)
    $d = "sff..@g.com";
    var_dump( preg_match('/^[a-zA-Z0-9]+\.?[a-zA-Z0-9]+@/', $d));
    int(0)
    $e = "adeade@g.com";
    var_dump( preg_match('/^[a-zA-Z0-9]+\.?[a-zA-Z0-9]+@/', $e));
    int(1)
    $f = "a.b.c@g.com";
    var_dump( preg_match('/^[a-zA-Z0-9]+\.?[a-zA-Z0-9]+@/', $f));
    int(0)
    
    你可以试试这个

    '/^[a-zA-Z0-9]+\.?[a-zA-Z0-9]+@/'
    
    以下是一些输出:

    $a = "sf..sf@g.com"
    var_dump( preg_match('/^[a-zA-Z0-9]+\.?[a-zA-Z0-9]+@/', $a));
    int(0)
    $b = "sf.sf@g.com";
    var_dump( preg_match('/^[a-zA-Z0-9]+\.?[a-zA-Z0-9]+@/', $b));
    int(1)
    $c = "sff.@g.com";
    var_dump( preg_match('/^[a-zA-Z0-9]+\.?[a-zA-Z0-9]+@/', $c));
    int(0)
    $d = "sff..@g.com";
    var_dump( preg_match('/^[a-zA-Z0-9]+\.?[a-zA-Z0-9]+@/', $d));
    int(0)
    $e = "adeade@g.com";
    var_dump( preg_match('/^[a-zA-Z0-9]+\.?[a-zA-Z0-9]+@/', $e));
    int(1)
    $f = "a.b.c@g.com";
    var_dump( preg_match('/^[a-zA-Z0-9]+\.?[a-zA-Z0-9]+@/', $f));
    int(0)
    
    你可以试试这个

    '/^[a-zA-Z0-9]+\.?[a-zA-Z0-9]+@/'
    
    以下是一些输出:

    $a = "sf..sf@g.com"
    var_dump( preg_match('/^[a-zA-Z0-9]+\.?[a-zA-Z0-9]+@/', $a));
    int(0)
    $b = "sf.sf@g.com";
    var_dump( preg_match('/^[a-zA-Z0-9]+\.?[a-zA-Z0-9]+@/', $b));
    int(1)
    $c = "sff.@g.com";
    var_dump( preg_match('/^[a-zA-Z0-9]+\.?[a-zA-Z0-9]+@/', $c));
    int(0)
    $d = "sff..@g.com";
    var_dump( preg_match('/^[a-zA-Z0-9]+\.?[a-zA-Z0-9]+@/', $d));
    int(0)
    $e = "adeade@g.com";
    var_dump( preg_match('/^[a-zA-Z0-9]+\.?[a-zA-Z0-9]+@/', $e));
    int(1)
    $f = "a.b.c@g.com";
    var_dump( preg_match('/^[a-zA-Z0-9]+\.?[a-zA-Z0-9]+@/', $f));
    int(0)
    

    为什么连字符不行?这些怎么了?下划线如何?是否允许使用单个点?如果是,请尝试
    “/^[a-zA-Z0-9]+\.[a-zA-Z0-9]+$/”
    您可以将
    筛选变量()
    筛选验证电子邮件一起使用;为什么一开始就要自己滚?毕竟,电子邮件地址只有在向其发送电子邮件成功(通常)时才能进行验证。为什么不使用连字符?这些怎么了?下划线如何?是否允许使用单个点?如果是,请尝试
    “/^[a-zA-Z0-9]+\.[a-zA-Z0-9]+$/”
    您可以将
    筛选变量()
    筛选验证电子邮件一起使用;为什么一开始就要自己滚?毕竟,电子邮件地址只有在向其发送电子邮件时才能被验证