var pattern = new RegExp(/([12]\d|0[1-9]|3[0-1])-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d{2,4})/);
var match = pattern.exec(field.val());
if (match == null)
return false;
var months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
var year = match[3];
var month = match[2];
var day = match[1];
var date = new Date(year, months.indexOf(month), day); // because months starts from 0.
var isOk = (date.getYear() == year && date.getMonth() == months.indexOf(month) && date.getDate() == day);
return isOk;
上述脚本允许用户以27-Nov-14
格式输入日期,但不能在27-NOV-14
中输入。
如何更改正则表达式以允许用户以大写形式输入month
,即NOV
和Nov
。
答案 0 :(得分:0)
您需要按顺序添加i
不区分大小写的标记,以使正则表达式中的字母与大写和小写字母相匹配。
var pattern = new RegExp("([12]\\d|0[1-9]|3[0-1])-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\\d{2,4})", "i");
必要时使用锚点。
var pattern = new RegExp("^([12]\\d|0[1-9]|3[0-1])-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\\d{2,4})$", "i");