2016-10-06 31 views
-1

我正在驗證英文名稱。我怎樣才能改進這個正則表達式,以確保連字符,逗號或撇號不會首先出現在字符串中?此外,連字符或撇號必須始終直接在一個字母前面和後面。爲美國和英國名稱改進以下RegEx

我有RegEx:[a-zA-Z-', ]

我的理解是,這將允許字符串中任何位置的所有字母,所有情況下都包含連字符,逗號和撇號以及空白。

相當新的語言,所以只是讓我的頭。

謝謝。

+0

函數是否知道它正在被賦予一個名字,或者它可能是別的,並且必須確定它是否是一個名字? – coladict

+0

它期望一個名字 – Jordan

+0

這是爲什麼downvoted,這似乎是一個合理的問題? – Jordan

回答

1

好,因爲它是隻給一個假定的名字,這裏是你可能想嘗試什麼:

^[A-Z][A-Za-z'-]+[a-z](,? [A-Z][A-Za-z'-]+[a-z])*$ 

這將名工作像O'HarryJefferson-Wayne,但將拒絕的話不會有一本小英文字母結束。

它的要點是這個[A-Z]名字的開始,[A-Za-z'-]+延續,[a-z]名稱的結尾。然後是一組可選名稱,帶有可選的逗號分隔符,但所需的空間。

我花了更多時間寫下例子來測試http://www.regexplanet.com/。這就是我在開發時練習正則表達式的地方。你應該試試。

相關問題