Koo*_*bin 7 regex validation logic
我一直在寻找一些文章和帖子,建议不要使用正则表达式来验证用户数据.我不确定所有的事情,但我通常会在电子邮件地址验证的情况下找到它.
所以我想清楚使用正则表达式来验证用户输入是否良好?如果它好,那么验证电子邮件地址有什么不好?
编辑:
所以我们可以说,对于数据类型的基本主要验证,我们可以使用正则表达式并且它是好的,并且对于完全验证,我们需要将它与另一个解析器组合.
对于一般用法中的电子邮件验证的第二部分,我们可以使用它,但根据标准,它是不合适的.是吗?
现在混淆选择正确的答案
它\xe2\x80\x99 很好,因为您可以使用正则表达式以简单的方式表达和测试复杂的模式。
\n它\xe2\x80\x99 很糟糕,因为正则表达式可能很复杂,而且你可能会做错很多事情。
\n编辑\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0 好了。Here\xe2\x80\x99s 一些真正的建议:首先确保可以使用正则表达式来表达预期的有效值。也就是说,有效值的语言是常规语言。否则你根本无法使用正则表达式(或者至少不能仅使用正则表达式)!
\n既然我们知道可以使用正则表达式验证什么,我们应该讨论使用正则表达式验证什么是可行的。如果我们以电子邮件地址为例(就像许多其他人一样),我们应该知道有效的电子邮件地址可能是什么样子(请参阅 RFC 5322):
\n\n\nRun Code Online (Sandbox Code Playgroud)\naddr-spec = local-part "@" domain\nlocal-part = dot-atom / quoted-string / obs-local-part\ndomain = dot-atom / domain-literal / obs-domain\ndomain-literal = [CFWS] "[" *([FWS] dtext) [FWS] "]" [CFWS]\ndtext = %d33-90 / ; Printable US-ASCII\n %d94-126 / ; characters not including\n obs-dtext ; "[", "]", or "\\"\n
这里我们看到本地部分可能由一个带引号的字符串组成,该字符串可能包含任何可打印的 US-ASCII 字符(不包括\\
和"
",但包括@
)。因此,测试电子邮件地址是否仅包含一个@
if是不够的我们希望根据 RFC 5322 允许地址。
另一方面,如果我们想要根据 RFC 5322 允许任何有效的电子邮件地址,我们也会允许在大多数情况下可能不存在或毫无意义的地址(例如""@localhost
)。
归档时间: |
|
查看次数: |
1542 次 |
最近记录: |