有史以来第一次有两个用户使用.education顶级域名进入我的应用程序。他们的电子邮件地址是这样的: user@domain.education。我在他们填写的表单上使用cfinput validate属性,如下所示:
<cfinput type="text" name="email" required="yes" message="Please enter a valid email address." validate="email">当用户提交表单时,他们会收到我的错误消息。多年来,该表单已在输入的所有其他电子邮件地址上成功工作。有什么窍门可以让它获得这个顶级域名吗?提亚
发布于 2020-12-01 13:24:11
避免所有的ColdFusion UI标记。它们只会带来痛苦。
每个版本的ColdFusion都会更新内置的电子邮件验证,以处理当前新的顶级域(TLD)。目前有近1600个活跃的TLD。
最好是删除启动的验证规则,并在激活应用程序上的用户之前发送一封电子邮件来验证电子邮件帐户是否存在。
发布于 2020-12-02 08:03:36
我同意其他关于限制使用cfinput的答案,但作为一个快速解决方案,您应该能够使用cfinput模式属性(https://helpx.adobe.com/coldfusion/cfml-reference/coldfusion-tags/tags-i/cfinput.html):
<cfinput type="text" name="email" required="yes" message="Please enter a valid email address." validate="regex" pattern="(?:[a-z0-9!##$%&'`+/=?^{|}~-]+(?:.a-z0-9!##$%&'*+/=?^_{|}~-+)_|"(?:\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f|[\x01-\x09\x0b\x0c\x0e-\x7f])_")@(?:(?:a-z0-9?.)+a-z0-9?|[(?:(?:250-5|20-4|010-9?).){3}(?:250-5|20-4|010-9?|a-z0-9-_a-z0-9:(?:\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f|[\x01-\x09\x0b\x0c\x0e-\x7f])+)])">`
模式属性可以更改为任何正则表达式。所提供的是符合RFC 5322的。
编辑:将模式更改为基于Java的RegEx和转义#
https://stackoverflow.com/questions/65084808
复制相似问题