2013-11-25 80 views
0

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

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

格式*不应该是11 *或*应该是11 *? –

+0

对不起,错字,现在修复 –

回答

1

下面的正则表达式应该与你说 '09oxoxxxxxx'

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

感谢男人,像魅力一样工作 –

0

试试这个:

^09[1-9][0-9][1-9][0-9]{6} 
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},因为这意味着单个标记的出现,这是真的,没有明确指定。

+0

感谢您解释为什么它不工作。由于某种原因你的帖子不在这里,当我检查答案:\投票 –

+0

@arashmoeen可能你没有刷新浏览器:) –

+1

如果我已经添加了一些答案,我从来没有试图解释如何OP的代码是错误的,+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
+0

对不起Udi是更快,但我投票给你解释结构,为我清除了很多东西。感谢一群 –

+0

@arashmoeen是的,他是。不要担心,不用担心。 –