首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正则表达式使用分隔符验证项目

问正则表达式使用分隔符验证项目
EN

Stack Overflow用户
提问于 2013-01-15 05:17:01
回答 3查看 121关注 0票数 1

我正在使用这个正则表达式在php中验证电子邮件(基于here)。

代码语言:javascript
复制
^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$;

我的问题是,如何验证由分隔符分隔的电子邮件列表的输入。假设分隔符是",“或";”或",“或";”。

我想我应该加上一些类似的东西。

代码语言:javascript
复制
(\s*(;|,)\s*|\s*$)

但它不起作用。

EN

回答 3

Stack Overflow用户

发布于 2013-01-15 05:26:51

通过一个模块来验证电子邮件比使用一个简短的正则表达式要好得多。请参阅http://www.ex-parrot.com/pdw/Mail-RFC822-Address.html

但幸运的是,php有一个验证器:

代码语言:javascript
复制
<?php
$email_a = 'joe@example.com';
$email_b = 'bogus';

if (filter_var($email_a, FILTER_VALIDATE_EMAIL)) {
    echo "This (email_a) email address is considered valid.";
}
if (filter_var($email_b, FILTER_VALIDATE_EMAIL)) {
    echo "This (email_b) email address is considered valid.";
}
?>

请参阅http://php.net/manual/en/filter.examples.validation.php

票数 3
EN

Stack Overflow用户

发布于 2013-01-15 05:27:45

不要使用正则表达式来验证电子邮件,PHP有一个用于此filter_var()的函数:

代码语言:javascript
复制
$email = 'joe@example.com';
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
  //valid
}else{
  //not
}

您可以修改此代码并使用explode(',',$email)来验证多个电子邮件。

票数 1
EN

Stack Overflow用户

发布于 2013-01-15 05:26:44

冒着只接受纯正则表达式解决方案时无法使用的答案的风险,出于几个原因,我建议使用带有分隔符的explode,继续迭代数组并依次验证每个电子邮件:

  1. 你的正则表达式和处理它的代码将是simplified.
  2. Your正则表达式,它只需要处理电子邮件的一般用例,并且可以是一个通用的可重用的操作,任何时候你需要验证一个电子邮件地址。还可以简单地将正则表达式操作替换为对用于电子邮件验证或任何其他自定义验证器的库的调用。
  3. 可以更容易地处理可能的相关需求,如在输出中指示未通过验证的电子邮件,或接受所有已验证的地址并丢弃未验证的地址。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14326817

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档