特定格式的正则表达式

时间:2013-11-25 07:02:08

标签: c# regex

我是c#中使用正则表达式的新手,我正在尝试用这种格式来验证电话号码09oxoxxxxxx其中x可以是任意数字,o只能是1-9,总长度应该是11个数字。这就是我认为可能是错误的。

if (Regex.IsMatch("09203041152", "^[0]{1}[9]{1}[1-9]{2}[1-9]{1}[0-9]{6}"))

4 个答案:

答案 0 :(得分:2)

您可以使用代表任意数字\d的简写字符[0-9]

Regex.IsMatch("09203041152", @"^09[1-9]\d[1-9]\d{6}$")

由于此处重复计数{2},您的模式无效:

  
    

^[0]{1}[9]{1} [1-9] {2} [1-9]{1}[0-9]{6}

  

这需要连续两个非零数字。但是在这个地方你需要一个非零数字和一个任意数字:

  
    

^[0]{1}[9]{1} [1-9] {1} [0-9] {1} [1-9]{1}[0-9]{6}

  

注意 - 您不需要指定等于{1}的重复计数,因为这意味着单个令牌出现,如果没有明确指定,则为true。

答案 1 :(得分:1)

你的正则表达式需要更加复杂:

^09[1-9][0-9][1-9][0-9]{6}$
  • ^:匹配行首。
  • 09:匹配0后跟0的数字。
  • [1-9]:匹配19之间的任何数字。
  • [0-9]:匹配09之间的任何数字。
  • [1-9]:再次匹配19之间的任何数字。
  • [0-9]{6}:匹配09之间的任意数字六次。
  • 现在匹配的总位数为11

答案 2 :(得分:1)

以下RegExp应与您声明的格式“09oxoxxxxxx”

相匹配
^09[1-9][0-9][1-9][0-9]{6}$

答案 3 :(得分:0)

试试这个:

^09[1-9][0-9][1-9][0-9]{6}