2010-09-27 166 views
2

有人可以幫我一塊正則表達式嗎?我想停止用戶輸入任何字符而不是a-z或連字符 -java字符串正則表達式

希望有人能幫助我。

感謝

+1

你確定你需要一個正則表達式嗎?在我看來,你可以簡單地檢查每個輸入的字符。即'如果(ch> ='a')'等 – Sjoerd 2010-09-27 12:35:42

+0

你不認真發佈這樣的問題來打擾人們嗎?在互聯網上閱讀簡單的正則表達式教程可以在10分鐘內回答您的問題。 [Google help!](http://www.google.com/search?q=regex+java+tutorial)(是的,我認爲你的問題有害) – erikbwork 2010-09-27 12:38:02

+0

'[^ az-]'匹配除az以外的任何字符和連字符。 – Amarghosh 2010-09-27 12:43:40

回答

7

您可以使用正則表達式:^[a-z-]+$

  • ^:啓動錨
  • $:尾錨
  • [..]:字符類
  • a-z:任何一個小寫字母
  • -:文字連字符。連字符通常是char類中的一箇中間字符,但如果其作爲字符類的字符處理,則其作爲的第一個末尾的
  • +:量詞爲一個或多個

如果你想允許空字符串,你可以用*

+1

現在這裏是OP可能會理解的解釋。很好(+1) – 2010-09-27 12:56:36

+0

非常感謝你,我發現正則表達式非常困難,我想不出任何其他方法來手動解決這個問題:/(我認爲沒有經驗是那裏的問題;)) – tom 2010-09-27 13:23:07

+0

@tom不要讓它得到你失望。正則表達式是可怕的野獸。需要一些程序員幾年才能理解它們。如果你嘗試,你會發現最終結果。這是一個Java在線正則表達式測試器:http://www.fileformat.info/tool/regex.htm。你可能想玩一下,它可能會幫助你更好地理解事物。 – 2010-09-27 15:05:12

2

更換+如果字符串不匹配^[a-z-]*$,則不允許使用的字符被輸入。這種模式是anchored,這樣就考慮了整個字符串,並使用repeatedcharacter class(星號指定零個或多個匹配項,因此將接受一個空字符串)以確保只使用允許的字符。

+0

我認爲連字符( - )應該被轉義。 – 2010-09-27 12:36:21

+0

@Faisal連字符如果是最後一個字符,則不需要在字符類中轉義。 – 2010-09-27 12:37:51

+0

downvoters請解釋嗎? – 2010-09-27 12:39:28

2

如果允許大寫使用本:

^[A-Za-z-]+?$

否則:

^[a-z-]+?$

2

如果字符串這個表達式匹配^[a-z\-]*$然後它的罰款。

+2

@Tingu如果它是最後一個字符,則不需要在字符類中跳過連字符。看看[本文](http://www.regular-expressions.info/charclass.html)中名爲「元字符內部的元字符」的部分 – 2010-09-27 12:40:55

+0

如果字符串匹配這個正則表達式,那麼它很好 - 不是嗎? ?順便說一句,連字符在字符類中的第一個/最後一個字符時不需要轉義@Tingu – Amarghosh 2010-09-27 12:41:04

+0

@Amarghosh謝謝你指出。修復了答案。 – 2010-09-27 12:49:52