2012-11-14 25 views
0

我正在检查应该描述街道名称的字符串验证。使用C制作正则表达式的街道模式#

模板是:单词以大写字母开头,数字以1到4位数字开头。

例子:Name Of Street 101

我尝试这样做:

Regex stRegex = new Regex(@"^[A-Z][a-z]+ [1-9]+$"); 

但它似乎不工作。

什么样的模式应该是使它工作?

回答

2

您只检查一个单词,并且不允许数字中有零。也许更像这样的东西?

@"^(?:[A-Z][a-z]+)+[1-9][0-9]{0,3}$" 

但是你的模板是有点限制,我想。那么O'Sullivan Street?你也可能想要允许多个空格(在空格后面加上另一个+)。

+0

非常感谢!有用。我只是有一个问题:什么“?:”意味着? – Billie

+0

@ user1798362它只是一个优化。如果将其忽略,则括号会创建一个您不需要的捕获组(可以稍后单独访问捕获组匹配的内容)。但是捕获是昂贵的,这就是为什么通常的好做法是让所有不需要的子集都不需要捕获。 –

+0

谢谢。最后一个问题,'{0,3}'设置数字的范围? – Billie