我试图从这样的字符串中找出日期的前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/