Flutter - 使用正则表达式验证电话号码
Posted
技术标签:
【中文标题】Flutter - 使用正则表达式验证电话号码【英文标题】:Flutter - Validate a phone number using Regex 【发布时间】:2019-08-28 08:26:21 【问题描述】:在我的 Flutter 移动应用中,我尝试使用 regex
验证电话号码。以下是条件。
-
电话号码必须包含 10 位数字。
如果我们使用国家代码,它可以是 12 位数字。 (例如国家代码:+12、012)
数字之间不能有空格或字符
简单来说,这里是唯一“有效”的电话号码
0776233475
、+94776233475
、094776233475
以下是我尝试过的,但它不起作用。
String _phoneNumberValidator(String value)
Pattern pattern =
r'/^\(?(\d3)\)?[- ]?(\d3)[- ]?(\d4)$/';
RegExp regex = new RegExp(pattern);
if (!regex.hasMatch(value))
return 'Enter Valid Phone Number';
else
return null;
我该如何解决这个问题?
【问题讨论】:
【参考方案1】:您可以使第一部分可选匹配 +
或 0 后跟 9。然后匹配 10 位数字:
^(?:[+0]9)?[0-9]10$
^
字符串开始
(?:[+0]9)?
可以选择匹配 +
或 0
后跟 9
[0-9]10
匹配10位数字
$
字符串结束
Regex demo
【讨论】:
注意:此 reg exp 不适用于任何通用电话号码,但仅对 OP 给出的号码有效,仅具有 +9 或 09 前缀。不要用作通用正则表达式。【参考方案2】:使用正则表达式验证:
String validateMobile(String value)
String pattern = r'(^(?:[+0]9)?[0-9]10,12$)';
RegExp regExp = new RegExp(pattern);
if (value.length == 0)
return 'Please enter mobile number';
else if (!regExp.hasMatch(value))
return 'Please enter valid mobile number';
return null;
【讨论】:
【参考方案3】: @override
String validator(String value)
if (value.isEmpty)
return 'Mobile can\'t be empty';
else if (value.isNotEmpty)
//bool mobileValid = RegExp(r"^(?:\+88||01)?(?:\d10|\d13)$").hasMatch(value);
bool mobileValid =
RegExp(r'^(?:\+?88|0088)?01[13-9]\d8$').hasMatch(value);
return mobileValid ? null : "Invalid mobile";
【讨论】:
【参考方案4】:我用的是@Dharmesh提供的RegExp
这就是您可以在 null 安全性下做到这一点的方法。
bool isPhoneNoValid(String? phoneNo)
if (phoneNo == null) return false;
final regExp = RegExp(r'(^(?:[+0]9)?[0-9]10,12$)');
return regExp.hasMatch(phoneNo);
用法:
bool isValid = isPhoneNoValid('your_phone_no');
【讨论】:
如果我不想要 RegEx 中的 (+91) 之类的国家/地区代码,我该怎么办。我只想验证一个普通的 10 位电话号码。 @JayTillu 很抱歉,RegEx
不是我的一杯茶。【参考方案5】:
String phoneNumberValidator(String value)
Pattern pattern =
r'\+994\s+\([0-9]2\)\s+[0-9]3\s+[0-9]2\s+[0-9]2';
RegExp regex = new RegExp(pattern);
if (!regex.hasMatch(value))
return 'Enter Valid Phone Number';
else
return null;
【讨论】:
以上是关于Flutter - 使用正则表达式验证电话号码的主要内容,如果未能解决你的问题,请参考以下文章