这样理解正则对吗

WBOY
Release: 2016-06-23 13:23:18
Original
827 people have browsed it

看到别人写的正则是如下:
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);
Copy after login
Copy after login
Copy after login

现在很多邮箱校验都是粗略校验,因为有的服务商确实支持诡异写法。我觉得宁可漏网,不要错抓,就好了,别让用户不能用。
附一个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);
Copy after login
Copy after login
Copy after login


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

你的正则可以匹配 ...@....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);
Copy after login
Copy after login
Copy after login


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

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

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

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

操你妈,有问题

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template