Python 如何在aws lex代码钩子(lambda)中验证电话号码和电子邮件
如何在AWS Lex code hook(Lambda)中验证电话号码和电子邮件 我尝试使用以下代码验证AWS Lex chatbot中的电话号码和电子邮件地址。我有错误Python 如何在aws lex代码钩子(lambda)中验证电话号码和电子邮件,python,amazon-web-services,aws-lambda,chatbot,amazon-lex,Python,Amazon Web Services,Aws Lambda,Chatbot,Amazon Lex,如何在AWS Lex code hook(Lambda)中验证电话号码和电子邮件 我尝试使用以下代码验证AWS Lex chatbot中的电话号码和电子邮件地址。我有错误 import re EMAIL_REGEX = re.compile(r"[^@]+@[^@]+\.[^@]+") if len(str(phonenumber)) <= 10 or len(str(phonenumber)) >= 10: return build_validation_resul
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'
)
重新导入
电子邮件\u REGEX=re.compile(r“[^@]+@[^@]+\.[^@]+”)
如果len(str(phonenumber))=10:
返回生成验证结果(False,
“电话号码”,
'请输入包含10位数字的有效电话号码'
)
如果没有电子邮件\u REGEX.match(电子邮件):
返回生成验证结果(False,
“电子邮件”,
'请输入有效的电子邮件地址'
)
首先,您需要修复一些格式设置。遵循本指南将很好地帮助您提高代码的可读性,无论是对于您自己还是您需要帮助或以后需要维护代码的其他人
其次,我假设您在这里省略了绝大多数代码,并且缩进中的一些错误来自粘贴到stackoverflow的问题。我已经修复了这些错误,但是如果您丢失了关于与AWSAPI交互的其他重要信息,在您发布代码之前,没有人可以帮助您,最好是对错误进行完整的回溯
并非所有人都同意我的观点,但除非你是正则表达式专家,否则最好复制gurus制作的正则表达式,并对其进行彻底测试,以验证它是否能产生你想要的结果,而不是自己制作。我在下面使用的正则表达式是从中复制的。我已经用一长串我收到的有效邮件测试过了,没有一封邮件不匹配
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'
)
首先,您需要修复一些格式设置。遵循本指南将很好地帮助您提高代码的可读性,无论是对于您自己还是您需要帮助或以后需要维护代码的其他人 其次,我假设您在这里省略了绝大多数代码,并且缩进中的一些错误来自粘贴到stackoverflow的问题。我已经修复了这些错误,但是如果您丢失了关于与AWSAPI交互的其他重要信息,在您发布代码之前,没有人可以帮助您,最好是对错误进行完整的回溯 并非所有人都同意我的观点,但除非你是正则表达式专家,否则最好复制gurus制作的正则表达式,并对其进行彻底测试,以验证它是否能产生你想要的结果,而不是自己制作。我在下面使用的正则表达式是从中复制的。我已经用一长串我收到的有效邮件测试过了,没有一封邮件不匹配
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'
)
当iam在lex bot的DialogCodeHook验证中使用此代码时,它会在chatbot测试中显示此代码。(发生错误:无效Lambda响应:收到来自Lambda的错误响应:未处理)。当iam在lex bot的DialogCodeHook验证中使用此代码时,它会在chatbot测试中显示此代码。(发生错误:Lambda响应无效:从Lambda接收到错误响应:未处理)