2013-07-12 30 views
0

我有一個要求,以驗證一個人的縮寫針對以下規則正則表達式:對一個人的縮寫

  1. 必須以字母(AZ)啓動
  2. 必須以字母(AZ)結束
  3. 字母字符必須用空格或連字符隔開

這是據我已經得到:

^[[:alpha:]]([[:alpha:]]|([[:blank:]-])[[:alpha:]])*([[:blank:]-][:alpha:]|[:alpha:])?$ 

它做1和2(並允許空格和連字符),但不能確保字母字符被空格或連字符分隔,即AD評估爲真。

感謝您的任何幫助。我對正則表達式相當陌生,所以任何幫助表示讚賞。

回答

0
^([A-Z][ -])*[A-Z]$ 
-      start 
-   --   any number of times 
    -----     a capital letter 
     ----    followed by exactly one separator (space or hyphen) 
      ----- followed by a final (and possibly initial) capital letter 
+0

完美。謝謝您的幫助。看到它用英文寫出很有用。感謝您花時間尋找和幫助。 – dunkyduncs

0

Alpha符號還是A-Z?

[:阿爾法:] == [A-ZA-Z]

嘗試此RE:

^[A-Z]([\s\-][A-Z])*$ 

"A B C" = true 
"ABC" = false 
"123" = false 
"A B-C" = true 
"A BC" = false 

是否RE允許單個字母字符或多個?