1

我有史以来第一次有两个用户使用 .education 顶级域进入我的应用程序。他们的电子邮件地址如下所示:user@domain.education。我在他们填写的表单上使用 cfinput validate 属性,如下所示:

<cfinput type="text" name="email" required="yes" message="Please enter a valid email address." validate="email">

当用户提交表单时,他们会收到我的错误消息。该表格多年来一直在输入的所有其他电子邮件地址上成功运行。有什么技巧可以让它占据这个顶级域名吗?TIA

4

2 回答 2

5

避免使用所有 ColdFusion UI 标签。它们只会引起疼痛。

ColdFusion 的每个版本都会更新内置电子邮件验证,以处理当时的新顶级域 (TLD)。目前有近 1600 个活跃的 TLD。

  • Javascript验证不会削减它。
  • 正则表达式也不会。
  • 如果您还没有,则需要在服务器上进行验证。

最好先删除该验证规则并发送电子邮件以验证电子邮件帐户是否存在,然后再在您的应用上激活用户。

于 2020-12-01T05:24:11.013 回答
3

我同意关于限制您使用 cfinput 的其他答案,但作为快速修复,您应该能够使用 cfinput PATTERN 属性(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?|[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-][a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\[\x01-\x09\x0b\x0c\x0e-\x7f])+)])">

PATTERN 属性可以更改为任何正则表达式。所提供的是符合 RFC 5322 的。

编辑:将模式更改为基于 Java 的 RegEx 并转义 #'s

于 2020-12-02T00:03:36.233 回答