正则表达式手机验证器^ \ +?(\ d +)( - (\ d +)|(\ d +)+)?$

时间:2016-05-13 14:17:08

标签: c# regex

我需要一个符合以下条件的电话验证器:

  • 可选择“+”开头
  • 0或1个连字符
  • 至少10个数字

使用以下正则表达式:^\+?(\d+)(-(\d+)|( \d+)+)?$

它有效,但它也算“+”和“ - ”。

我可以为前+123-45678

写信

10个字符,但只有8个数字。

应始终至少有10个号码

1 个答案:

答案 0 :(得分:1)

让我们一次看一部分:

  • 可选择“+”开头

你已经实现了这个目标:

^\+?
  • 0或1个连字符

您可以使用lookahead

来实现此目的
^(?=[^-]*-?[^-]*$)
  • 至少10个数字

我认为它也应该只包含数字(也许是连字符)?再次,使用前瞻:

^(?=(\d-?){10})

全部放在一起:

^\+?(?=[^-]*-?[^-]*$)(?=(\d-?){10})

如果验证规则不那么模糊,那么这个正则表达式将是 lot 更简单。这实际上取决于您的预期用途。