以下是解析电子邮件文本的代码
<?php
$res = preg_match_all(
"/[a-z0-9]+([_\\.-][a-z0-9]+)*@([a-z0-9]+([\.-][a-z0-9]+)*)+\\.[a-z]{2,}/i",
$text,
$matches
);
?>
但我必须将其重新修改为
不是
@
解析
(在)
如何修改正则表达式公式?
答案 0 :(得分:1)
很简单:替换
@
与
\(at\)
$res = preg_match_all(
"/[a-z0-9]+([_\.-][a-z0-9]+)*\(at\)([a-z0-9]+([\.-][a-z0-9]+)*)+\.[a-z]{2,}/i",
$text,
$matches
);
请注意双重“反斜杠:
\\.
没有必要逃脱这一点。
相反,有必要逃避(
和)
,因为它们在正则表达式中为meta-characters。
另外,正如评论中所建议的那样,您可以使用@
和(at)
获得具有唯一正则表达式的电子邮件:
/[a-z0-9]+([_\.-][a-z0-9]+)*(@|\(at\))([a-z0-9]+([\.-][a-z0-9]+)*)+\.[a-z]{2,}/i
答案 1 :(得分:-1)
您可以使用filter_var
方法,而不是使用RegEx查找电子邮件是否有效。
<?php
$email = "john.doe@example.com";
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo("$email is a valid email address");
} else {
echo("$email is not a valid email address");
}
?>
可以在w3schools
的教程中找到一个示例