Flutter-使用Regex验证电话号码

Pea*_*Gen 6 regex android ios dart flutter

在我轻巧的移动应用程序中,我正在尝试使用验证电话号码regex。以下是条件。

  1. 电话号码必须包含10位数字。
  2. 如果我们使用了国家代码,则可以是12位数字。(国家代码示例:+12、012)
  3. 数字之间不能有空格或字符

简单来说,这是唯一的“有效”电话号码

0776233475+94776233475094776233475

下面是我尝试过的方法,但是它不起作用。

String _phoneNumberValidator(String value) {
    Pattern pattern =
        r'/^\(?(\d{3})\)?[- ]?(\d{3})[- ]?(\d{4})$/';
    RegExp regex = new RegExp(pattern);
    if (!regex.hasMatch(value))
      return 'Enter Valid Phone Number';
    else
      return null;
  }
Run Code Online (Sandbox Code Playgroud)

我该如何解决?

The*_*ird 12

您可以使第一部分为可选,匹配a +或0,然后匹配9。然后匹配10位数字:

^(?:[+0]9)?[0-9]{10}$
Run Code Online (Sandbox Code Playgroud)
  • ^ 字符串开始
  • (?:[+0]9)?可选地匹配a +0后跟9
  • [0-9]{10} 匹配10位数字
  • $ 字符串结尾

正则表达式演示

  • 注意:此 reg exp 不适用于任何通用电话号码,但仅对 OP 给出的号码有效,这些号码仅具有 +9 或 09 前缀。不要用作通用的 reg exp。 (11认同)

Dha*_*ata 10

使用正则表达式进行验证

String validateMobile(String value) {
String patttern = r'(^(?:[+0]9)?[0-9]{10,12}$)';
RegExp regExp = new RegExp(patttern);
if (value.length == 0) {
      return 'Please enter mobile number';
}
else if (!regExp.hasMatch(value)) {
      return 'Please enter valid mobile number';
}
return null;
}                                                                                                
Run Code Online (Sandbox Code Playgroud)


小智 5

  @override
  String validator(String value) {
    if (value.isEmpty) {
      return 'Mobile can\'t be empty';
    } else if (value.isNotEmpty) {
      //bool mobileValid = RegExp(r"^(?:\+88||01)?(?:\d{10}|\d{13})$").hasMatch(value);

      bool mobileValid =
          RegExp(r'^(?:\+?88|0088)?01[13-9]\d{8}$').hasMatch(value);
      return mobileValid ? null : "Invalid mobile";
    }
  }
Run Code Online (Sandbox Code Playgroud)