我在谷歌上没有找到任何关于斯里兰卡电话号码的正则表达式; 格式为:
775645645
(9位数)0775645645
(10位数)+94775645645
应以 7 或 0 或 +94 开头。谁能帮我这个。 感谢您的解决方案。
让我们构建
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
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(本地代码)
更新为新指定的移动提供商:
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}$";
^(\+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
开头,也可以不指定。1
到 9
0
至 9
。+94
、0
开头,也可以不指定。这是根据斯里兰卡电话格式惯例制定的。测试固定电话中的各个区号被“忽略”。测试移动运营商代码也是不必要的,因为它们从 070 到 079(尽管 079 目前未分配)。 来源:
书写电话号码的国家惯例斯里兰卡的电话号码