格式日期:MMM D[,] YYYY
[,]
- 可选的逗号,可以是一些空格。示例:
Nov 12, 2000 - true
Nov 12 2000 - true
Nov 12, 2000 - true
Nov 12, 2000 true
我的正则表达式:/^(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\*(\d{1,2})\,? *(\d{4})$/
但如果值 - 2010 年 3 月全部为真
我的校验值函数
function checkDateWithStringMonth1(value) {
//reset
resetDate();
//set min and max date
var minYear = 1900;
//var maxYear = (new Date()).getFullYear();
// regular expression to match required date format
re = /^(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\ *(\d{1,2})\,? *(\d{4})$/;
//check correct
if (value != '') {
if (regs = value.match(re)) {
if (regs[2] < 1 || regs[2] > 31) {
return false;
}
if(regs[3] < minYear){return false;}
} else { return false; }
} else { return false; }
//assign
return true;
}
最佳答案
/^(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s+(\d{1,2}),?\s+(\d{4})$/
与原来的不同之处:
\s
而不是 [space] 来处理不同种类的空格+
而不是*
:*
表示0个或多个,你要1个或多个- 无需转义
,
。
编辑:容纳逗号后没有空格的日期:
/^(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s+(\d{1,2})(?:,|\s)\s*(\d{4})$/
(?:
统计一个非捕获组。(?:,|\s)\s*
:允许使用逗号或空格字符,然后可能还有更多空格。
测试:
var dates = ["Nov 12, 2000", "Nov 12 2000", "Nov 12, 2000", "Nov 12, 2000", "Nov 12,2000"],
regex = /^(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s+(\d{1,2})(?:,|\s)\s*(\d{4})$/;
dates.map(function (d) { return regex.test(d); });
// => [true, true, true, true, true]
关于javascript - 帮我创建正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6074991/