2015-02-09 138 views
0

我需要使用正則表達式驗證輸入字符串。使用正則表達式驗證Java字符串

的要求是:

輸入

  1. 不得與%開始,_

  2. 不能包含&#><

  3. 可以是空

我已經成功地使用了[^%_#&<>][^#&<>]*|^$

有沒有更好的方法來解決這個問題?

+1

您可以使用環視以避免重複某些字符,但我認爲您當前的解決方案足夠優雅。你不滿意嗎? – Biffen 2015-02-09 11:25:16

+2

定義*更好*。 – m0skit0 2015-02-09 11:25:46

+0

你的正則表達式匹配'%a'和'a#' – user3409662 2015-02-09 11:32:50

回答

0

你的正則表達式是錯誤的,你也應該放在第一方案^$約束:

^[^%_#&<>][^#&<>]*|$ 

這是因爲第一種情況可以在應用。

你定義只是指出正則表達式:一個空字符串,或者至少有一個字符的字符串,是不是%_#,...

它認爲所提出的正則表達式是不夠好。一些(可能不是java)正則表達式庫提供了額外的功能來聲明該字符串不應包含某個字符。但由於正則表達式並不那麼複雜,所以不會有太大的幫助。

相關問題