-2

我需要一个匹配以下内容的正则表达式:

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

例如,它将要求每个单词都以大写字母开头,并且单词之间只有一个空格。它还必须拒绝任何尾随或前导的空白字符。

谢谢

4

3 回答 3

4

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

于 2013-04-11T11:31:06.537 回答
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}*)*$
于 2013-04-11T12:03:12.563 回答
0

像这样: ?

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

于 2013-04-11T11:34:46.023 回答