2016-10-28 35 views
1

我写了下面的正则表达式正则表达式的值更新

string validnumber = @"^[a-zA-Z]{2}[0-9]{7}(?:-[0-9]{5})?$"; 

这将使像“AA1234567”和“AA1234567-12345”的号码。

我想允许下的所有格式

AA1234567? 
AA1234567?? 
AA1234567??? 
AA1234567???? 

AA1234567-? 
AA1234567-?? 
AA1234567-??? 
AA1234567-???? 

谁能请帮助我,我怎么能写

+0

使'-'可选,然后 –

+0

为什么现在一天,这个问题上有太多的反对票,太早?而且它发生得太早,甚至不允许操作员找到并解决问题! –

+0

大部分时间,这是因为他们很少花费精力去创造他们的问题,或者至少这是我过去所观察到的。 – jpaugh78

回答

0

试试这个:

^[a-zA-Z]{2}\d{7}(?:-?\d{1,4})?$ 

Explanation

更新为每个评论

+0

这不会引发任何错误,如果我键入下面的类型也BB5415852-1234514545 –

+0

在上述表达式d {1,4}将只允许数字我想允许字母数字字符。我们需要做什么改变? –

+0

我尝试了这个[a-zA-Z] {2} \ d {7}( - ?\ [a-zA-Z0-9] {1,4})?$,但是这不能按预期工作。 –

2

您需要在第二子表达的横线后面添加一个问号,使'-'字符可选,并允许后缀是一至四位数字:

string validnumber = @"^[a-zA-Z]{2}[0-9]{7}(?:-?[0-9]{1,4})$"; 
//           ^ ^^^^

Demo.

+0

请再次看到我的问题.. –

4

我认为这应该工作:

^[a-zA-Z]{2}\d{7}(?:-?\d{1,4})?$ 

Proof

说明:

Regular expression visualization