如何在 aws lex 代码挂钩中验证 phone 号码和电子邮件(在 lambda 中)

How to validate phone number and email in aws lex code hook(in lambda)

如何在 AWS Lex 代码挂钩(在 Lambda 中)中验证 phone 号码和电子邮件。

我曾尝试使用以下代码来验证 AWS Lex 聊天机器人中的 phone 号码和电子邮件地址。我遇到错误。

import re
EMAIL_REGEX = re.compile(r"[^@]+@[^@]+\.[^@]+")

if len(str(phonenumber)) <= 10 or len(str(phonenumber)) >= 10:
       return build_validation_result(False,
                                       'PhoneNumber',
                                      'Please enter valid phone number which contains 10 digits'
                                       )
    if not EMAIL_REGEX.match(email):
        return build_validation_result(False,
                                       'Email',
                                       'Please enter valid email address'
                                       )

首先,您需要修正一些格式。遵循指南 here 将为您提供良好的服务,既可以提高您自己的代码的可读性,也可以提高您希望获得帮助或以后需要维护代码的其他人的代码的可读性。

其次,我假设您在这里省略了绝大多数代码,并且缩进中的一些错误来自粘贴到 Whosebug 的问题。我已经修复了这些错误,但是如果您遗漏了有关与 aws 交互的其他重要信息 api 没有人可以帮助您,直到您 post 代码并且最好是对错误的完整追溯。

不是每个人都同意我的看法,但除非你是正则表达式专家,否则通常最好复制专家制作的正则表达式并彻底测试它以验证它产生你想要的结果而不是自己制作一个.我在下面使用的正则表达式是从 here 复制的。我已经用我拥有的一长串有效电子邮件对其进行了测试,没有一个不匹配。

import re

PHONE_REGEX = re.compile(r'[0-9]{10}')

EMAIL_REGEX = re.compile(r"""(?:[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#'$"""+
    r"""%&*+\/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d"""+
    r"""-\x7f]|\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*"""+
    r"""[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4]["""+
    r"""0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|["""+
    r"""a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|"""+
    r"""\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])""")

if not PHONE_REGEX.match(phonenumber):
    return build_validation_result(
        False,
        'PhoneNumber',
        'Please enter valid phone number which contains 10 digits'
        )

if not EMAIL_REGEX.match(email):
    return build_validation_result(
        False,
        'Email',
        'Please enter valid email address'
        )