我对常规表达不是很了解,所以我不明白为什么我会收到这个错误。
我正在使用以下代码来匹配字符串$str
中的所有电子邮件,并将其保存在数组$match
中:
preg_match_all(
"/^[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/",
$str,
$match
);
显然在正则表达式中存在问题(我从here获得)因为我收到此错误:
警告:preg_match_all()[function.preg-match-all]:未知修饰符 '='在C:\ xampp \ htdocs \ project \ Framework \ Sanitizer.class.php上 第38行
有人可以告诉我这是什么问题吗?
由于
答案 0 :(得分:4)
你必须在等号之前逃避正斜杠,例如:
preg_match_all(
"/^[a-zA-Z0-9.!#$%&’*+\/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/",
$str,
$match
);
“/”是整个表达式的分隔符,因此必须在正则表达式中进行转义
答案 1 :(得分:1)
您需要使用反斜杠转义该字符串中的许多字符。 你想要逃脱的一些是:/?^ {|}。
我会这样写的:
preg_match_all(
"/^[a-zA-Z0-9.!#$%&’*+\/=\?\^_`\{\|\}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/",
$str,
$match
);
我发现这个网站在匹配电子邮件地址方面非常有用: