1. 程式人生 > >正則匹配的那些事

正則匹配的那些事

遇到一個測試題目  全是正則基礎的就這裡記一下

寫一個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)