如何验证以色列电话号码?

4

我需要一个电话号码字段的验证表达式,例如09-8222333。 我尝试使用#^0\d([\d]{0,9})([-]{0,9})\d{7}$#,但它没有起作用。


注:这是一个正则表达式,用于验证电话号码格式。
8个回答

2

这里:https://regex101.com/r/jiSGUV/1

或者直接复制正则表达式:/^(?:(?:(\+?972|\(\+?972\)|\+?\(972\))(?:\s|\.|-)?([1-9]\d?))|(0[23489]{1})|(0[57]{1}[0-9]))(?:\s|\.|-)?([^0\D]{1}\d{2}(?:\s|\.|-)?\d{4})$/


1
我猜在开头使用0是必须的,所以你可以使用以下正则表达式:0\d-\d{7}。在regex101中检查。 \d表示[0-9],{num}表示重复num次。

1

0\d-\d{7} 是正确的。

你可以尝试使用 \b0\d-\d{7}\b 来避免在 "3209-8222333435" 中匹配到 "09-8222333"。

对于带空格而非破折号的号码,使用 \b0\d[- ]\d{7}\b,例如 "09 8222333"。

使用 \b((0\d[- ]\d{7})|(0\d[- ]\d{3}[- ]\d{4}))\b 来支持在前三个符号后用破折号或空格分隔的号码,例如 "06 455 3535 或 04 242-3424"。

http://regexr.com/ 学习正则表达式,它关于 JavaScript 正则表达式,但同样适用于 C#。 在 http://www.tutorialspoint.com/csharp/csharp_regular_expressions.htm 查看 C# 示例。


0

针对安卓系统

public static boolean validateTelAndMobileNo(String mobileNo){
    //String test = "00911234567891";
    return  !(!mobileNo.matches("(00972|0|\\+972)[5][0-9]{8}") && !mobileNo.matches("(00970|0|\\+970)[5][0-9]{8}") && !mobileNo.matches("(05[0-9]|0[12346789])([0-9]{7})") && !mobileNo.matches("(00972|0|\\+972|0|)[2][0-9]{7}"));
}

针对VB.net

Public Function validateMobileNo(m As String) As boolean
    If String.IsNullOrWhiteSpace(m) Then Return false

    return not (Not Regex.IsMatch(m, "(00972|0|\\+972)[5][0-9]{8}") AndAlso Not Regex.IsMatch(m, "(00970|0|\\+970)[5][0-9]{8}") AndAlso Not Regex.IsMatch(m, "(05[0-9]|0[12346789])([0-9]{7})") AndAlso Not Regex.IsMatch(m, "(00972|0|\\+972|0|)[2][0-9]{7}")) 
End Function

这将验证以色列和巴勒斯坦的移动电话号码和固定电话号码,您可以轻松调整以删除巴勒斯坦的移动电话和固定电话。


0
你可以使用以下正则表达式。

cellular israeli regex
/^05\d([-]{0,1})\d{7}$/

all numbers israel
/^0\d([\d]{0,1})([-]{0,1})\d{7}$/

Update one Regex for all Isrealy numbers

^\+?(972|0)(\-)?0?(([23489]{1}\d{7})|[5]{1}\d{8})$

这个答案基于Wassem的博客文章,你可以在这里阅读。


0

以下是一个包含以下以色列前缀的以色列电话号码正则表达式:02-09 {7},05 {8},07 {8}:

^0?(([23489]{1}[0-9]{7})|[57]{1}[0-9]{8})+$

(此正则表达式仅适用于以色列地区,对于以色列地区之外的地区,您应该将正则表达式开头的0号码替换为972号码)


0

像这样应该可以工作:

/[0-9]{2}-[0-9]{7}/

[0-9]{2} 可匹配任何两次恰好为 09 的数字,- 将匹配单个连字符,然后 [0-9]{7} 将匹配任何七次恰好为 09 的数字。

您还可以使用 \d 数字标识符来替换您在问题中使用的 [0-9]


-3

这包括所有电话号码,包括座机和071、072、073、074、075、076、077前缀:

^\+?(972|0)(\-)?0?(([23489]{1}\d{7})|([71,72,73,74,75,76,77]{2}\d{7})|[5]{1}\d{8})$

3
这似乎是一个初学者的正则表达式,他们还没有学会方括号的含义。也许可以查看Stack Overflow regex 标签信息页面,其中包含有关这种常见初学者错误的简要解释。 - tripleee
1
片段 [71,72,73,74,75,76,77] 等同于 [,1-7]。两个类后面的 {1} 是不必要的。正则表达式的其余部分看起来过于复杂。 - AdrianHHH

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接