首頁 > 後端開發 > php教程 > 这样理解正则对吗

这样理解正则对吗

WBOY
發布: 2016-06-23 13:23:18
原創
841 人瀏覽過

看到别人写的正则是如下:
if (!preg_match('/^[\w\-\.]+@[\w\-\.]+(\.\w+)+$/',$_string))
其中对于中括号及里面的理解,我是这样的:中括号表示其中任意一项;
那么,上面这段中的它[\w\-\.]我就理解成了前面第一个打头的 可以是所有任意英文字符,或是横杠,或是点都可以

如果上面的理解对,那么 问题来了,这段代码的作用是为了验证email的正确性。
大家知道email第一个打头的不能是横杠,这不就错了吗?


回复讨论(解决方案)

现在很多邮箱校验都是粗略校验,因为有的服务商确实支持诡异写法。我觉得宁可漏网,不要错抓,就好了,别让用户不能用。
附一个dropbox国外网站,email验证的源码:

$r = preg_match('/^[A-Za-z0-9!#$%&\'*+\/=?^_`{|}~-]+(\.[A-Za-z0-9!#$%&\'*+\/=?^_`{|}~-]+)*@[A-Za-z0-9-]+(\.[A-Za-z0-9-]+)*\.([A-Za-z]{2,})$/', $email);
登入後複製
登入後複製
登入後複製

现在很多邮箱校验都是粗略校验,因为有的服务商确实支持诡异写法。我觉得宁可漏网,不要错抓,就好了,别让用户不能用。
附一个dropbox国外网站,email验证的源码:

$r = preg_match('/^[A-Za-z0-9!#$%&\'*+\/=?^_`{|}~-]+(\.[A-Za-z0-9!#$%&\'*+\/=?^_`{|}~-]+)*@[A-Za-z0-9-]+(\.[A-Za-z0-9-]+)*\.([A-Za-z]{2,})$/', $email);
登入後複製
登入後複製
登入後複製


你二啊,文不对题!我问的是我的理解对吗,你个二货?

你的正则可以匹配 ...@....net
你说对吗?


现在很多邮箱校验都是粗略校验,因为有的服务商确实支持诡异写法。我觉得宁可漏网,不要错抓,就好了,别让用户不能用。
附一个dropbox国外网站,email验证的源码:

$r = preg_match('/^[A-Za-z0-9!#$%&\'*+\/=?^_`{|}~-]+(\.[A-Za-z0-9!#$%&\'*+\/=?^_`{|}~-]+)*@[A-Za-z0-9-]+(\.[A-Za-z0-9-]+)*\.([A-Za-z]{2,})$/', $email);
登入後複製
登入後複製
登入後複製


你二啊,文不对题!我问的是我的理解对吗,你个二货?

你的态度,注定了你的发展。

\w 大小写英文字母,数字,下划线
这正则能匹配到  .@..__     _@_._   -@-.0   .....
正则有问题 

理解没问题,态度有问题。

操你妈,有问题

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板