2016-02-14 51 views
1

我想使用正則表達式來驗證名稱。名字必須包含名字,中間名,姓氏(不一定全是)。但我也想強加一個條件,即名稱必須至少有四個字符。我發現正則表達式來驗證這裏的全名Java Regex to Validate Full Name ...,並找到正則表達式來檢查字符串中的至少三個字符(字母)Regex to check for at least 3 characters。但我不知道如何將這兩者結合起來以獲得理想的結果。請幫助我實現所需的正則表達式,以便我可以完成我的項目。正則表達式來驗證具有至少四個字符的全名

+0

應該是什麼最後的結果?你有什麼嘗試?你在哪裏失敗? ''^ [\\ p {L} .'-] + $「'正則表達式允許一次或多次使用字母,空格,點,撇號和連字符。允許三個或更多的限定量詞是'{3,}'。現在什麼是有效和無效的情況? –

+0

有效的例子必須是john c mather或者steve作業,但是無效的例子會像dj,po lice,mc dew carp等等,我的意思是說名字必須有至少四個字符串 – SKG

+0

Try ['String pattern =「^ \\ PL {4}(?:\\ S + \\ PL +)?(?:\\ S + \\ PL +)?$「'](https://regex101.com/r/hY5bM1/1)。用'.matches()',你可以刪除'^'和'$'。請參閱[本演示](http://ideone.com/mGSfLf)。 –

回答

2

您可以使用

^[a-zA-Z]{4,}(?: [a-zA-Z]+){0,2}$ 

regex demo

這將名字開始與兩個合作較低和較高的字母。

  • ^ - 4個或更多ASCII字母
  • (?: [a-zA-Z]+){0,2} - - 串
  • [a-zA-Z]{4,}開始0-2次出現的空間,隨後與一個或多個ASCII字母
  • $ - 字符串的結尾。

如果您需要限制的話,開始用大寫字母,您可以使用

^[A-Z][a-zA-Z]{3,}(?: [A-Z][a-zA-Z]*){0,2}$ 
+1

非常感謝! – SKG

0

這可能是有點大材小用,但:

([A-Z][a-z]{3,})([A-Z][a-z]{3,})?([A-Z][a-z]{3,}) 

應該做的伎倆。 它匹配以大寫字母后跟3個或更多小寫字母開始的單詞 - >單詞長度爲4。中間名是可選的,並且姓氏不包含尾隨空白。


編輯:
如果你想支持 「花哨」 字符(AOU等),你可以閱讀細節this question。 使用從Java 7的圖案與UNICODE_CHARACTER_CLASS標誌的正則表達式應該是這樣的:

(\\p{Upper}\\p{Lower}{3,})(\\p{Upper}\\p{Lower}{3,})?(\\p{Upper}\\p{Lower}{3,}) 
+0

它不會與我的名字做伎倆。 –

+0

@WiktorStribiżew 請參閱[此問題](http://stackoverflow.com/a/4307261/4233265)瞭解有關使用「花哨」字符的名稱的正則表達式的信息。 – SilentStorm

+0

我爲什麼要?我認爲這是你的答案。 –

相關問題