正則匹配的那些事
阿新 • • 發佈:2018-12-29
遇到一個測試題目 全是正則基礎的就這裡記一下
寫一個validateParam方法判斷下列物件中引數的正確性(用正則表示式進行判斷)並返回校驗結果(true or false)。校驗規則如下:
office:3位大寫字母+3位數字,長度為6;
fltNumber:二字碼(2位大寫字母)+號碼(3-4位數字)+字尾(0-1位大寫字母);
legs:2-6個字串,每個字串由3個大寫字母組成,字串之間以'-'連線;
startDate:yyyy-mm-dd的格式;
startTime:24小時制時刻,2位數字+1個冒號+2位數字,範圍從'00:00'-'23:59'
待判斷的引數為:var param = {
office:'PEK001',
fltNumber:'CA001',
legs:'PEK-SHA-CKG',
startDate:'2016-01-28',
startTime:'23:45'
}
function validateParam(params) { var officeReg = /^[A-Z]{3}(\d){3}$/g; var fltNumberReg = /^[A-Z]{2}([0-9]{3,4})$/; var legsReg = /^(([A-Z]{3})-([A-Z]{3})){1,4}/;//這裡的匹配好像有問題 如果大佬知道方法 麻煩提出來一下 謝謝 var startDateReg = /^\d{4}\-((01|03|05|07|08|10|12)\-(([0-2][0-9])|(3[0-1])))|((02|04|06|09|11|)\-(([0-2][0-9])|(30)))$/; //這裡沒有判斷閏年 如果要判斷還需要加上 或者 var startTimeReg= /^([01][0-9]|2[0-3]):([0-5][0-9])$/; var isOffice = officeReg.test(params.office); var isFltNumber = fltNumberReg.test(params.fltNumber); var isLegs = legsReg.test(params.legs); var isStartDate = startDateReg.test(params.startDate); var isStartTime = startTimeReg.test(params.startTime); console.log('isOffice',isOffice); console.log('isFltNumber',isFltNumber); console.log('isLegs',isLegs); console.log('isStartDate',isStartDate); console.log('isStartTime',isStartTime); } var param = { office:'PEK001', fltNumber:'CA4255', legs:'PEK-SHA-CKG', startDate:'2016-11-30', startTime:'23:05' }; validateParam(param)