在JSR-303(javax.validation)中有正則表達式驗證。例如:正則表達式驗證 - 顯示違規字符。 javax.validation
@Pattern(regexp="[\w_\\.]+")
private String username;
當該值是無效的顯示(不匹配正則表達式)的默認消息是一樣的東西「必須匹配正則表達式{}」。但用戶不理解正則表達式,因此將它展示給他們是無關緊要的。一個選項是隻顯示「用戶名包含非法字符」,在大多數情況下它可能會很好。但是,顯示哪個字符是錯誤的會很好。
這不能用正則表達式直接實現 - 它可以匹配也可以不匹配。您必須定義其他缺少某些組件的模式,或者嘗試從字符串中刪除字符,直到匹配,然後將這些字符顯示給用戶。
那是一般的。另一個問題是如何用javax.validation實現這一點。
因此,要總結的問題:「字符,*和$都是非法的」
如何與javax.validation顯示有問題的字符,因此該消息看起來像
有時候,不要告訴什麼是非法的,而是說明什麼是合法的,這是個好主意。例如:「用戶名只能由數字和字母組成。」 – Ingo 2011-04-07 15:09:22
@Ingo - 是的,但是當我們添加「下劃線和點」(「和短劃線」)時,它變得太冗長了。 – Bozho 2011-04-07 15:56:52