如何在文本字段中使用正则表达式验证电话号码或允许空格?

Dav*_*Dev 1 c# regex

我正在尝试根据 RegEx 验证电话号码。

我得到了这个答案:

电话号码的正则表达式

它定义了用于验证以下电话号码的表达式:+44 (0) 1234 123456

我已经将它从 JS 移植到 C#,成为

var regexPhone = new Regex(@"^(?!([^-]*-){5})(\+\d+)?\s*(\(\d+\))?[- \d]+$");

这是有效的,但验证器也适用于允许为空的电话号码字段,例如传真(不是每个人都拥有那些老式设备之一)。

如何更改此设置以允许空白,以及针对上述数字进行验证?

编辑:下面的答案适用于上面的数字,但它失败了:+ 44 (0)20 1234 1234。还有什么我可以添加的吗?

Bli*_*ndy 5

只需|^$在最后添加一个:

var regexPhone = new Regex(@"^(?!([^-]*-){5})(\+\d+)?\s*(\(\d+\))?[- \d]+$|^$");
Run Code Online (Sandbox Code Playgroud)

编辑:因为你想要一个更轻松的正则表达式,在空白方面,只需撒上\s*

var regexPhone = new Regex(@"^\s*(?!([^-]*-){5})(\+\s*\d+)?\s*(\(\s*\d+\s*\))?\s*[- \d]+\s*$|^\s*$");
Run Code Online (Sandbox Code Playgroud)