当前位置:  开发笔记 > 运维 > 正文

为什么人们使用regexp进行电子邮件和其他复杂验证?

如何解决《为什么人们使用regexp进行电子邮件和其他复杂验证?》经验,为你挑选了3个好方法。

有许多的电子邮件正则表达式的问题突然出现了这里,我老老实实困惑,为什么人们在使用这些疯狂钝匹配的表达,而不是一个非常简单的解析器,拆分电子邮件成名称和域的令牌,然后验证那些反对名称允许的有效字符(此部分无法进一步检查)和域名的有效字符(我想您可以添加对所有世界TLD的检查,然后为国家/地区添加另一级别的二级域名用这样的(即com.uk)).

真正的问题是tlds和slds不断变化(与普遍看法相反),因此如果您计划在根名称服务器发送更改时进行所有这些高级别检查,则必须不断更新正则表达式.

为什么没有一个模块可以简单地验证从数据库或平面文件中提取的域,并可选择检查DNS是否匹配记录?

我在这里很认真,为什么每个人都如此热衷于为此发明完美的正则表达式?它似乎不是解决问题的合适方法......

说服我不仅可以在regexp中做(并满足每个人),但它是一个比自定义解析器/验证器更好的解决方案.

-亚当



1> Dave Sherohm..:

他们这样做是因为他们看到"我想测试这个文本是否符合规范",并立即想"我知道,我会使用正则表达式!" 没有完全理解规范的复杂性或正则表达式的局限性.正则表达式是处理各种文本匹配任务的一个很棒的强大工具,但它们并不是完成所有这些任务的完美工具,似乎许多使用它们的人都忽视了这一事实.


所以,换句话说,"当一个程序员遇到问题时,她会想,"我将使用一个正则表达式!"现在程序员有两个问题."
我并不一定不同意你的观点,即正则表达不是可行的方法,但你并没有真正说出任何可以帮助你的案子.我认为你的答案可以解释为:"哦,正则表达式对某些东西有好处,但不是为了这个." 这就像一个无知的开发者一样无知.

2> Brian Knobla..:

捕获大多数(但不是全部)常见错误的正则表达式相对容易设置和部署.编写自定义解析器需要更长的时间.



3> Konrad Rudol..:

一旦掌握了基础知识,使用RegExp的诱惑就非常大.事实上,RegExp似乎非常强大,以至于人们自然希望在任何地方开始使用它.我真的很怀疑,有很多心理这里涉及到,由兰德尔作为证明XKCD漫画(是的,这非常有用).

我曾经对RegExp做了一次介绍性介绍,最重要的幻灯片警告过度使用它.这是唯一使用粗体字体的幻灯片.我相信这应该更频繁地完成.

大家都退后一步!

推荐阅读
linjiabin43
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有