Iss*_*lly 10 regex language-agnostic email-validation
我见过很多例子,有很多'不,你错过了什么'评论.匹配电子邮件地址的正确方法是什么?
出于Sanity的缘故,只有完全限定的域名,不允许使用@localhost.(或两种方式)
必须允许子域名(issac@deptartment.company.museum)
纯正的正则表达式是不可能的.Regexen无法匹配嵌套括号,完整的RFC规范要求.(关于此事的最新RFC是RFC5322,仅在几个月前发布.)
对电子邮件地址的完全验证需要一些与CFG相关的内容,还有一些事情要警惕; 例如,电子邮件地址可以包含'\0'
空字符...因此您不能在它们上使用任何C的普通字符串函数.
我实际上感觉有点奇怪回答一个问题,并附有我写的东西的链接,但事实上,我有一个我之前准备的:一个简短的(据我所知)完全兼容的验证器,在Haskell ; 你可以在这里看到源代码.我想这些代码可以很容易地移植到任何类似的解析库(也许是C++的Boost.Spirit),或者很容易从另一种语言中挂钩(Haskell有一种非常简单的方式让C使用Haskell代码,所有东西都可以使用C绑定...)
源代码中也有大量的测试用例(我没有从模块中导出它们),这是由于Dominic Sayers,他在PHP中拥有自己的RFC兼容解析器版本.(有几个测试失败了,但它们比RFC5322指定的更严格,所以我现在很好.)
归档时间: |
|
查看次数: |
7898 次 |
最近记录: |