2014-01-16 42 views
1

我需要写正则表达式以适应特定的代码模式:要匹配的字符串有18个整数字符,我需要检查是否在第一个位置有0和在第二个8或9.我写了这个表达式,但它不起作用:正则表达式为参考号

Regex regex = new Regex(@"^(.{0}[0]{1}[8,9])(^\d{18}$)"); 
     string compare = "082008014385161873"; 
     if (regex.IsMatch(compare)) 
     { 
      //true 
     } 

任何人都可以帮助我吗?

+0

也许你已经在这样做了,但是现在有几个真正有用的在线正则表达式测试人员可以反复地改进你的工作并找出问题。 http://regex101.com/是一个很好的。而且他们可以使固定链接共享工作。这是你的表达式:http://regex101.com/r/pR7cA0 –

回答

1

试试这个正则表达式。它执行以下操作:

  • 验证第一个数字为0
  • 验证第二位为8或9
  • 验证16个更多的数字跟随第一2位数字

^0[89]\d{16}$ 
1

以下的正则表达式使用:

^0[89]\d{16}$ 

替代使用正预测先行断言:

^(?=0[89])\d{18}$ 
+0

为什么我需要把16的字符串长度预计为18? – Sara

+2

因为0和(8或9)是另外两个数字。 1 + 1 + 16 = 18. –

+0

@Sara,'0 [89]'消耗两个字符串,而正向查找断言'(?= 0 [89])'不消耗。 – falsetru