這是在phpbb中驗證電子郵件地址的函數的一部分。 我有一個有效的電子郵件地址電子郵件地址的正則表達式在'dot'之前不接受'&'
「pwd-p & r2.coop @ ...」但它不被驗證接受。
有趣的是,當我嘗試 「pwd-pr2.co & OP @ ......」(與 '&' '點' 後)
和「PWD-PR & 2coop @ ... 「(沒有'圓點'),兩者都是有效的,
但是」pwd-pr & 2.coop @ ...「('&'之後的'點')不是。
我試圖改變幾天的正則表達式,但仍然不知道如何解決它,以便它接受我的電子郵件地址。
function get_preg_expression($mode)
{
switch ($mode)
{
case 'email':
// Regex written by James Watts and Francisco Jose Martin Moreno
// http://fightingforalostcause.net/misc/2006/compare-email-regex.php
return '([\w\!\#$\%\&\'\*\+\-\/\=\?\^\`{\|\}\~]+\.)*(?:[\w\!\#$\%\&\'\*\+\-\/\=\?\^\`{\|\}\~]|&)[email protected]((((([a-z0-9]{1}[a-z0-9\-]{0,62}[a-z0-9]{1})|[a-z])\.)+[a-z]{2,63})|(\d{1,3}\.){3}\d{1,3}(\:\d{1,5})?)';
break;
}
}
'&'不是正則表達式中的特殊字符,所以你不需要轉義它 – Stephan
我無法確認,對我來說它也匹配'pwd-p&r2.coop @ ...'。你使用什麼正則表達式引擎(什麼編程語言)?除了正則表達式之外,是否還有額外的驗證接受約束? – Bergi
@ted:否。在那裏提出的正則表達式顯然不符合OP的有效地址。相反,看看http://davidcel.is/blog/2012/09/06/stop-validating-email-addresses-with-regex/ – Bergi