如何在Flutter中使用Regex验证喀麦隆电话号码

ux6nzvsh  于 2023-05-23  发布在  Flutter
关注(0)|答案(1)|浏览(167)

我正在Flutter中构建一个移动的应用程序,当用户输入电话号码时,我想验证和检查哪个电话号码属于哪个移动运营商(MTN CM或橙子CM)。
假设我附加了国家代码+237,这些是一个号码有效的一般规则,属于喀麦隆的特定运营商:

一般规则

  • 所有移动的号码必须以数字6开始。
  • 所有移动的号码的长度为9位。
  • 所有移动的号码不得有任何空格或特殊字符/字母。
    对于MTN CM
  • MTN号码可以从8开始,并占用任何数字,直到结束(688684749)。
  • MTN号码可以从7开始,并占用任何数字,直到结束(678684749)。
  • MTN号码也可以从5开始,然后是一个范围(0 - 4),并采用任何数字,直到结束(651684749,652684749,653684749,654684749)。
    橙子CM
  • 橙子号码可以从9开始,并占据任何数字,直到结束(698684749)。
  • 此外,橙子数字可以以5开头,后面是一个范围(5 - 9),并占据任何数字直到结尾(655684749,656684749,657684749,658684749)。
RegExp regexMtn = RegExp(r'(^6+(?:\+?8|7|5[1-4])+[0-9]{9}$)');

尝试这就是我到目前为止在屏幕截图上所做的,但它并不像预期的那样工作,我已经看了正则表达式文档,但它似乎压倒了我。
期望我希望在与电话号码匹配的TextFormField后缀处显示移动的运营商的徽标,如果电话号码不匹配,则阻止用户提交请求。

vfwfrxfs

vfwfrxfs1#

要验证编号,请执行以下操作:

^              # Match at the beginning of the string
6              # something that starts with '6'
\d{8}          # and followed by 8 more digits
$              # right before the end of the string.

试试on regex101.com
检查是否为MTN号码:

^              # Match at the beginning of the string
6              # something that starts with '6'
(?:            # followed by either
  [87]\d{7}    # '8' or '7', then 7 other digits
|              # or
  5[0-4]\d{6}  # '5', any digit from 0 to 4, then 6 other digits
)              # right before
$              # the end of the string.

试试on regex101.com
检查是否是橙色数字(解释基本相同):

^6(?:9\d{7}|5[5-9]\d{6})$

试试on regex101.com

相关问题