2013-04-11 67 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}*)*$