在AWS Lex代码钩子中如何验证电话号码和电子邮件

2024-03-28 21:21:36 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我曾尝试使用以下代码验证AWS Lex chatbot中的电话号码和电子邮件地址。我有错误。在

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'
                                       )

Tags: 代码buildreawslenreturnif电子邮件
1条回答
网友
1楼 · 发布于 2024-03-28 21:21:36

首先,您需要修改一些格式。遵循指南here将很好地为您自己和其他需要帮助或以后需要维护代码的人提高代码的可读性。在

其次,我假设您在这里省略了大部分代码,并且缩进中的一些错误来自粘贴到stackoverflow的问题。我已经修复了这些错误,但是如果您丢失了与awsapi交互的其他重要信息,那么在您发布代码并对错误进行完整回溯之前,没有人能够帮助您。在

可能不是每个人都同意我的观点,但除非你是正则表达式专家,一般最好复制专家制作的regex,并对其进行彻底测试,以验证它是否产生了您想要的结果,而不是自己生成一个。下面我使用的正则表达式是从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'
        )

相关问题 更多 >