2013-04-11 96 views
-2

我需要一个正则表达式,将符合下列条件:正则表达式,它们之间一个空格匹配大写单词

"United States"  // match 
"United States" // not match 
"united States"  // not match 
"United states"  // not match 
" United States" // not match 
"United States " // not match 

例如,它要求每一个字开始一个大写字母和具有之间只有一个空格话。它也必须否认任何尾随或领先的空白字符。

感谢

+0

被允许在一个单词中间大写字母? – shakurov 2013-04-11 11:32:14

+1

@Luke您的编辑已被批准,但这是一个错误的编辑。这些标签并不是无关的,因为正则表达式的实现可能会因人而异,所以底层技术对于提供工作答案可能很重要。 – 2013-04-11 11:32:31

+0

先显示你的努力.. – 2013-04-11 11:33:27

回答

4

您的描述相当模糊,但一般情况下,应^[A-Z][a-z]*([A-Z][a-z]*)*$没有IGNORECASE标志工作。

+0

+1。不过,这仅适用于ASCII字母。 – shakurov 2013-04-11 11:37:29

0

喜欢这个:?

^[A-Z][a-z]* [A-Z][a-z]*$

+0

'{1}'是多余的。 – 2013-04-11 11:35:09

+0

不需要的是 – dotNET 2013-04-11 11:35:37

+0

绝对正确,固定 – x4rf41 2013-04-11 11:35:44

0

以下是类似于@ DOTNET的答案,但它占非ASCII字符类:这里

^[\p{Lu}\p{Lt}]\w*([\p{Lu}\p{Lt}]\w*)*$ 

我已经允许中旬字非小写字符,因为,在unicode中,有很多更多的字符类不只是小写和大写。

要与严格小写中间的字母匹配的话,

^[\p{Lu}\p{Lt}]\p{Ll}*([\p{Lu}\p{Lt}]\p{Ll}*)*$ 
相关问题