任何人都可以建议一个正则表达式来测试字符串的第一个单词是否是一周中的一天。
例如“7 月 16 日,星期二”
到目前为止,我有这个:
/^((Monday)|(Tuesday)|(Wednesday)|(Thursday)|(Friday)|(Saturday)|(Sunday))/.test("Tuesday, July 16")
哪个有效,有没有办法可以进一步使用正则表达式将表达式分成日和月?
任何人都可以建议一个正则表达式来测试字符串的第一个单词是否是一周中的一天。
例如“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()
.
虽然它可能不是“简短而甜蜜”,但我有几个理由建议这种方法: