日期的前2个字母

日期的前2个字母

我试图从这样的字符串中找出日期的前2个字母:

... due Monday ...


并为其分配一个数字(是的,到目前为止该数字很重要)。这是我尝试过的:

var due_min = homework.input.match(/(?:due|by) (.{2})(?:(?:.+?)?)\b/ig)[0].trim().toLowerCase();
    var day_number;
    switch(due_min){
         case 'su':
             day_number = 0;break;
         case 'mo':
             day_number = 1;break;
         case 'tu':
             day_number = 2;break;
         case 'we':
             day_number = 3;break;
         case 'th':
             day_number = 4;break;
         case 'fr':
             day_number = 5;break;
         case 'sa':
             day_number = 6;break;
         default:
             day_number = moment().day()+1;break;
    }


但这似乎无法正常工作。

如果正则表达式不匹配,我也需要明天返回。

最佳答案

您可以使用数组来简化它

一个jsfiddle示例... http://jsfiddle.net/accqq3ya/3/

var regex = /(?:due|by) (.{2})(?:(?:.+?)?)\b/gi
var days = ["su", "mo", "tu", "we", "th", "fr", "sa"];


function getWeekday(text){

    var day = regex.exec(text);
    if( day && (day = day[1]) ){
         var day = days.indexOf(day.toLowerCase().trim());
         if(~day) return day;
    }
    return moment().day()+1;

}

var day_number = getWeekday(homework.input.value);

关于javascript - Javascript Regex-如何收集日期的前2个字母,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29572186/

10-10 08:49