正则表达式值更新

时间:2016-10-28 15:22:03

标签: c# regex

我写过以下正则表达式

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

这将允许“AA1234567”和“AA1234567-12345”这样的数字。

我想允许以下所有格式

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

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

任何人都可以帮助我,我该怎么写

3 个答案:

答案 0 :(得分:4)

我认为这应该有效:

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

Proof

说明

Regular expression visualization

答案 1 :(得分:2)

您需要在第二个子表达式中的短划线后添加问号,以使'-'字符可选,并允许后缀长度为1到4位:

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

Demo.

答案 2 :(得分:0)

试试这个:

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

Explanation

根据评论更新