2012-07-06 48 views
0

我有一個輸入爲全名的文本框。正則表達式不能像預期的那樣對全名起作用

當用戶輸入My Name作爲輸入時,我不會收到任何錯誤。但是當用戶輸入爲My Name Is時,出現錯誤。

正則表達式我已經是

([a-zA-Z]+|[a-zA-Z]+\\s[a-zA-Z]+) 

真正想要的是什麼,文本應該有

only (a-z OR A-Z) AND white space... 

演示輸入是

  1. 我的名字是XYZ PQR STU
  2. 我的名字是XYZ
  3. XYZ PQR STU

這是如何使用正則表達式完成的?

我使用

Pattern p = Pattern.compile("[a-zA-Z\\s]"); 
    Matcher m = p.matcher("DummyName"); 
    boolean matchFound = m.matches(); 

還是我越來越matchFound作爲FALSE

+0

我覺得你應該讓你的問題更清楚一點,現在你說只有空白纔可以接受某個名字?也許顯示可接受的輸入? – 2012-07-06 23:29:51

+0

@owlstead:更新的問題... – 2012-07-06 23:31:58

+0

如果您使用Eclipse,則可以嘗試使用QuickREx插件進行一些實時測試。 – 2012-07-06 23:35:26

回答

3

\s更新是空白。如果要允許字符類中的空格以及大寫和小寫字母,則可以使用[a-zA-Z\s]

+0

不能正常工作... se我更新的問題.. – 2012-07-06 23:29:55

+0

在你的更新中,你的模式只會匹配1個字符。如果您想在一個組中使用全名,請嘗試匹配'([a-zA-Z \ s] +)。或者'([a-zA-Z \ s] +?)+'如果你想要多個組。 – mayhewr 2012-07-06 23:34:21

+0

我已更新我的問題..請參閱可能的輸入...我應該使用什麼? – 2012-07-06 23:35:48

2

試試這個^[a-zA-Z]+(?:\s+[a-zA-Z]+)*$。你可以調整一下你的口味。 ?:是爲了確保該組不捕獲 - 如果您只是測試完整的字符串,則不需要這些。 ^$將匹配輸入文本的開始和結尾 - 對於matches()不是直接要求的,但是它是一個很好的保護措施。

+0

謝謝你的回答... – 2012-07-07 00:55:34

相關問題