Javascript 正则表达式的第一个单词是星期几

Javascript 正则表达式的第一个单词是星期几,javascript,regex,Javascript,Regex,谁能推荐一个正则表达式来测试字符串的第一个单词是否是一周中的某一天 e、 g.“7月16日,星期二” 到目前为止,我有: /^((Monday)|(Tuesday)|(Wednesday)|(Thursday)|(Friday)|(Saturday)|(Sunday))/.test("Tuesday, July 16") 这确实有效,有没有办法进一步使用正则表达式将表达式拆分为日和月?尝试以下方法: /^(?i)\W*(?:Mon|Tues|Wednes|Thurs|Fri|Satur|Su

谁能推荐一个正则表达式来测试字符串的第一个单词是否是一周中的某一天

e、 g.“7月16日,星期二”

到目前为止,我有:

/^((Monday)|(Tuesday)|(Wednesday)|(Thursday)|(Friday)|(Saturday)|(Sunday))/.test("Tuesday, July 16")
这确实有效,有没有办法进一步使用正则表达式将表达式拆分为日和月?

尝试以下方法:

 /^(?i)\W*(?:Mon|Tues|Wednes|Thurs|Fri|Satur|Sun)day\b[\s\S]*$/.test("Tuesday, July 16")

就我个人而言,我想把它分成多个部分。一个用于检查格式,另一个用于检查值中数据的有效性

首先,使用基本正则表达式检查格式:

var input = "Tuesday, July 16";
var pattern = new RegExp("^([a-z]+), ([a-z]+) (\\d{2})$", "i");
var isFormattedCorrectly = pattern.test(input);
然后,如果格式正确,我会将有效的日期和月份值存储在两个数组中,并检查日期片段是否与其中一个值匹配:

var validDays = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"];
var validMonths = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];

var isValidDay = false;
var isValidMonth = false;

if (isFormattedCorrectly ) {
    var dateParts = input.match(pattern);
    isValidDay = (validDays.indexOf(dateParts[1]) > 0) ? true : false;
    isValidMonth = (validMonths.indexOf(dateParts[2] > 0) ? true : false;
}
注意:如果您使用的是JQuery,也可以使用
JQuery.inArray()
而不是
.indexOf()

虽然它可能不“短而甜”,但我有几个理由建议采用这种方法:

  • 正如我前面提到的,它允许您将格式检查和数据检查彼此分离,这通常被认为是一件好事。:)
  • 它支持更详细的验证消息(例如,“日期必须格式化为…”、“您必须输入有效月份”等),而不是单一的、通用的“这不是有效日期”消息
  • 希望它能够更容易地维护“有效值”数据,因为它只是一个数组,而不是内置在正则表达式中的模式。您可以随意更新值(例如,如果您想使用3个字符的月和日值而不是完整的单词)
  • 它允许轻松地进行语言定制(例如,如果出于某种原因需要支持西班牙语,可以将数组中的数据切换为西班牙语天数和月份,并且检查仍然有效)

  • 您是否也关心该日期是否为有效日期?+1,因为它起作用。嘿,为什么不使用
    而不是
    [\s\s]