【发布时间】:2017-01-13 07:47:45
【问题描述】:
我想在Laravel 5.1 验证中使用regex 检查逗号分隔的电子邮件地址,并且我在regex 下方创建了电子邮件地址,但它不适用于我。
regex: /^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/i
我想允许这样的电子邮件:test1test.com, test2@test.com, test3@test.com
这是我的验证示例代码:
$rules = array(
'email' => 'regex:/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/i',
);
$messages = [
'email.regex' => 'Please enter valid Email.',
];
$validator = Validator::make(Input::all(), $rules, $messages);
if ($validator->fails()) {
} else {
}
【问题讨论】:
-
见stackoverflow.com/questions/4412725/…。你可以使用这种方法(
^(+ 你的正则表达式 +,?)+$)或者使用更像 PCRE 的东西/^([_a-z0-9-]+(?:\.[_a-z0-9-]+)*@[a-z0-9-]+(?:\.[a-z0-9-]+)*\.[a-z]{2,3})(?:,(?1))*$/i -
电子邮件并不是那么容易验证:hexillion.com/samples
-
电子邮件地址中不允许使用逗号,因此您也可以在逗号上展开,修剪结果并使用
filter_var()单独检查每个条目。 -
为什么不用逗号分解字符串并通过内置的 laravel 电子邮件验证器规则验证每个元素?
-
不是使用explode并在foreach中检查它们的选项吗?
标签: php regex laravel validation