c# 正则表达式匹配所有斯里兰卡电话号码

问题描述 投票:0回答:4

我在谷歌上没有找到任何关于斯里兰卡电话号码正则表达式; 格式为:

  1. 775645645
    9位数)
  2. 0775645645
    10位数)
  3. +94775645645

应以 70+94 开头。谁能帮我这个。 感谢您的解决方案。

c# regex validation
4个回答
13
投票

让我们构建

pattern

 ^            - anchor (string start)
 7|0|(?:\+94) - either 7 or 0 or +94
[0-9]{9,10}   - from 9 up and including to 10 digits (chars on [0-9] range)
 $            - anchor (string end)

所以我们有

  string pattern = @"^(?:7|0|(?:\+94))[0-9]{9,10}$";

测试:

string[] tests = new string[] {
  "775645645",
  "0775645645",
  "+94775645645",
  "123456669",
  "1234566698888",
  "+941234566698888",
  "+94123456"
};

string pattern = @"^(?:7|0|(?:\+94))[0-9]{9,10}$";

string report = string.Join(Environment.NewLine, tests
  .Select(item => $"{item,-20} : {(Regex.IsMatch(item, pattern) ? "Matched" : "Not")}"));

Console.Write(report);

结果:

775645645            : Matched
0775645645           : Matched
+94775645645         : Matched
123456669            : Not
1234566698888        : Not
+941234566698888     : Not
+94123456            : Not

0
投票
 String regexPhoneNumber = "^(?:0|94|\\+94)?(?:(11|21|23|24|25|26|27|31|32|33|34|35|36|37|38|41|45|47|51|52|54|55|57|63|65|66|67|81|912)(0|2|3|4|5|7|9)|7(0|1|2|5|6|7|8)\\d)\\d{6}$";

有效电话号码类型:-

  • 0771234567

  • 771234567

  • +94771234567

  • 94771234567

  • 0111234567(本地代码)


0
投票

更新为新指定的移动提供商:

String regexPhoneNumber = "^(?:0|94|\\+94)?(?:(11|21|23|24|25|26|27|31|32|33|34|35|36|37|38|41|45|47|51|52|54|55|57|63|65|66|67|81|912)(0|2|3|4|5|7|9)|7(0|1|2|4|5|6|7|8)\\d)\\d{6}$";

0
投票

用于测试移动和固定电话斯里兰卡号码的简单正则表达式

^(\+94|0)?[1-9]{2}[0-9]{7}$ - "test for landline numbers"

^(\+94|0)?7[0-9]{8}$        - "test for mobile numbers"

(^(\+94|0)?[1-9]{2}[0-9]{7}$)|(^(\+94|0)?7[0-9]{8}$) - "combined regex"

说明

斯里兰卡的所有电话号码均遵循通用格式。 0 或 +94 后跟 9 位数字。根据号码是固定电话还是手机,一些额外的规则适用。

固定电话

  • 数字可以以
    +94
    0
    开头,也可以不指定。
  • 后跟 2 位区号,可包含的数字为从
    1
    9
  • 最后以运营商代码结尾,后面是指定固定电话的 6 位数字,均可包含数字
    0
    9

手机号码

  • 数字可以以
    +94
    0
    开头,也可以不指定。
  • 后跟 2 位操作员代码(目前所有操作员代码均以 7 开头)。
  • 最后以指定手机的7位数字结束

这是根据斯里兰卡电话格式惯例制定的。测试固定电话中的各个区号被“忽略”。测试移动运营商代码也是不必要的,因为它们从 070 到 079(尽管 079 目前未分配)。 来源:

书写电话号码的国家惯例

斯里兰卡的电话号码

© www.soinside.com 2019 - 2024. All rights reserved.