我有一个正则表达式来检查,在JavaScript的作品电子邮件地址:正则表达式工作在JavaScript,但不是在PHP
var re = /^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$/;
"[email protected]".search(re); // returns 0
但是,当我在使用PHP的preg_match(),使用相同的正则表达式,并通过电子邮件发送它doesn”工作!
$re = "/^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$/";
echo preg_match($re,"[email protected]");
// echoes 0 - not 1!!
编辑
好了,所以我必须增加更多的细节。
完整的代码是在这里:
$re = '/^([0-9a-zA-Z]([-.\w\+\%\#\!\$\'\*\/\=\?\^\`\{\|\}\~]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$/';
if(is_array($recipients)){
for($i=0;$i<count($recipients);$i++){
echo preg_match($re,$recipients[$i]) . " - " . $recipients[$i] . "<br />";
}
}
当我刚做的preg_match()(for循环外),它可以正确匹配的模式。但如果它在这个循环中,那么它将不会验证!
没有'foo + bar @ example.com'? (更不用说'%','_' *等*)我是一只中度伤心的熊猫。 – Piskvor 2012-01-13 15:42:01
那很奇怪。 [IDEOne](http://ideone.com/JHuqs)似乎不同意。 – 2012-01-13 15:42:06
对我来说工作很好... – prodigitalson 2012-01-13 15:46:35