java world@tw的詳細介紹,
情境:想針對可不輸入年齡區間條件檢查,允許只輸入from或to欄位。
因為Reqular Expressions博大精深,恐怕不是一兩頁/夜說的完,
當然是遇到才試試自己要用的。
from field最小為0(所以是非負整數),
to field最小為1,而且必須大於from field-所以是正整數。
回傳message string原因是要在上層引用,
JOptionPane.showMessageDialog(this,errMsg, "INFORMATION", JOptionPane.INFORMATION_MESSAGE);
如果 errMsg==null 視為通過檢核。
因為java world網頁上提供的Reqular Expressions卡不住連續的 '00' 之類的字串,
所以要多作一些額外的檢查。
以下為程式碼:
//must be number
private static String REGEX_DIGIT="[0-9]+";
//NOT NEGATIVE INTEGER
private static String REGEX_NOT_NEGATIVE_INTEGER="^\d+$";
//POSITIVE INTEGER
private static String REGEX_POSITIVE_INTEGER="^[1-9]*[1-9][0-9]*$";
/** Check age fields is legal digit. */
private String check(String ageFrom,String ageTo){
String errMsg=null;
//digit check
if(errMsg==null
&& ageFrom.trim().length()>0
&& ageFrom.trim().matches(CALSS_NAME.REGEX_DIGIT)==false)
errMsg="Please input the digital number in age from.";
if(errMsg==null && ageTo.trim().length()>0
&& ageTo.trim().matches(CALSS_NAME.REGEX_DIGIT)==false )
errMsg="Please input the digital number in age to.";
//length than 1 and 0 begin
if(errMsg==null && ageFrom.trim().length()>1
&& ageFrom.trim().substring(0,1).equals("0"))
errMsg="'0' begins! Please input the right number in age from.";
if(errMsg==null && ageTo.trim().length()>1
&& ageTo.trim().substring(0,1).equals("0"))
errMsg="'0' begins! Please input the right number in age to.";
//0 check
if(errMsg==null && ageTo.trim().length()>0
&& Integer.parseInt(ageTo.trim())==0 )
errMsg="Field age to must be greater than 0.";
if(errMsg==null && ageFrom.trim().length()>0
&&ageFrom.trim().matches(CALSS_NAME.REGEX_NOT_NEGATIVE_INTEGER)==false)
errMsg="Please input the right format number in age from.";
if(errMsg==null && ageTo.trim().length()>0
&& ageTo.trim().matches( CALSS_NAME.REGEX_POSITIVE_INTEGER)==false )
errMsg="Please input the right format number in age to.";
if( (ageFrom.trim().length()>0 && ageTo.trim().length()>0)
&& Integer.parseInt(ageFrom)>=Integer.parseInt(ageTo) )
errMsg="The age from field must be smaller than the age to field.";
return errMsg;
}
trim()跟length()>0是為了避免空格(space)。
文章定位: