AWS Cognito 电话号码正则表达式验证失败

aws cognito phone number regex validation faild

提问人:WAEX 提问时间:7/25/2023 最后编辑:Wiktor StribiżewWAEX 更新时间:8/10/2023 访问量:202

问:

通过控制台从 AWS 创建用户时。他们使用下面的正则表达式验证模式,如下面的屏幕截图所示。

正则表达式模式

"^\+[1-9][0-9]{0,24}$"

但是当我用 python 尝试这个手机号码时,它被匹配了。但是在控制台或 API 中,它给出了一个名为“手机号码无效”的错误

样本手机号码 +80570497

cognito user creation

Python 脚本

>>> re.match(r"^\+[1-9][0-9]{0,24}$", "+80570497")
<re.Match object; span=(0, 9), match='+80570497'>
>>> 

python amazon-web-services amazon-cognito 电话号码

评论

0赞 Abdul Niyas P M 7/25/2023
你是否有任何前导或尾随空格?
0赞 WAEX 7/25/2023
@AbdulNiyasPM不。我验证了。
0赞 Abdul Niyas P M 7/25/2023
我认为电话号码也必须有 10 位数字,对吧?
1赞 luk2302 7/25/2023
请注意错误消息:“电话号码必须适合...并且是有效的电话号码 - 据推测,无论正则表达式如何,都有一些验证会使该输入无效。

答:

0赞 Youcef LAIDANI 7/25/2023 #1

Cognito 说:

输入用户的电话号码,包括国家/地区代码。根据您的选择和用户池配置,电话号码不是必需属性。

您的电话号码中缺少国家/地区代码,您必须遵循 E.164 格式。例如,如果这是斯里兰卡的电话号码,则应写为 +9480570497,其中是斯里兰卡的国家/地区电话代码。94

0赞 Koynov 8/10/2023 #2

除了屏幕截图中的正则表达式之外,Cognito 似乎还在做更多的验证。例如,以 +80、+21、+259 等开头的数字。 看起来它不允许当前从此列表中取消分配的任何国家/地区代码 https://en.wikipedia.org/wiki/List_of_country_calling_codes