web-dev-qa-db-ja.com

Flutter-Regexを使用して電話番号を検証する

私の簡単なモバイルアプリでは、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;
  }

どうすればこれを解決できますか?

11
Lemon Juice

最初の部分をオプションとして、+または0に続けて9を一致させることができます。次に、10桁を一致させます。

^(?:[+0]9)?[0-9]{10}$
  • ^文字列の開始
  • (?:[+0]9)?オプションで、+または0の後に9が続く
  • [0-9]{10} 10桁に一致
  • $文字列の終わり

正規表現のデモ

19
The fourth bird

regexを使用した検証

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;
}                                                                                                
15