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

Sam*_*ewa -2 c# regex validation

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

  1. 7756456459位数字)
  2. 077564564510位数字)
  3. +94775645645

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

Dmi*_*nko 5

让我们来构建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)
Run Code Online (Sandbox Code Playgroud)

所以我们有

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

测试:

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);
Run Code Online (Sandbox Code Playgroud)

结果:

775645645            : Matched
0775645645           : Matched
+94775645645         : Matched
123456669            : Not
1234566698888        : Not
+941234566698888     : Not
+94123456            : Not
Run Code Online (Sandbox Code Playgroud)