JavaScript正则表达式仅匹配X位

JavaScript正则表达式仅匹配X位,javascript,regex,numbers,Javascript,Regex,Numbers,有人能帮我的豌豆脑找出为什么我的简单正则表达式不能像我期望的那样工作吗 我想将MM/DD/YYYY的日期格式与精确地匹配2和4位数字,例如1955年1月16日。我下面的代码就是这样做的,但它也匹配2+和4+数字,所以像011/16/1955或01/16/19555(1个额外数字)这样的东西也通过了我的验证 //validate date of birth var dob_label = $date_of_birth.find('label').text().slice(0, -1), do

有人能帮我的豌豆脑找出为什么我的简单正则表达式不能像我期望的那样工作吗

我想将MM/DD/YYYY的日期格式与精确地匹配2和4位数字,例如1955年1月16日。我下面的代码就是这样做的,但它也匹配2+4+数字,所以像011/16/1955或01/16/19555(1个额外数字)这样的东西也通过了我的验证

//validate date of birth
var dob_label    = $date_of_birth.find('label').text().slice(0, -1),
dob_mm           = $dob_mm.val(),
dob_dd           = $dob_dd.val(),
dob_yyyy         = $dob_yyyy.val(),     
regex_two_digit  = /^\d{2}$/,
regex_four_digit = /^\d{4}$/;

if ( (regex_two_digit.test(dob_mm)) && (regex_two_digit.test(dob_dd)) && (regex_four_digit.test(dob_yyyy)) ) {
    //a button is enabled here
} else {
    //a validation error is thrown here and the button is disabled
}

需要指定字符串的开始和结束

/^\d{4}$/

试试这个
^\d{1,2}\/\d{1,2}\/\d{4}$

不管怎样,为什么不使用下拉菜单呢?我试过了,它对我不起作用。没有下拉列表,因为用户是键盘输入者。修改后的代码仍然允许超过2或4位数字。它确实验证了数字(我不能做'aa'),但它仍然允许太多我无法理解的数字…*编辑*等等,它似乎可以工作,但我告诉你,我多次尝试开头/结尾字符,wtf???哈哈/耸耸肩…也许你有一些刷新/缓存的事情正在进行,而代码实际上没有更新为什么不使用一个输入并使用date.js解析它并将其格式化为你喜欢的格式。。。与占位符结合使用效果非常好……当您提供这样的答案时,您还应该解释为什么您的建议能够正确工作,而问题中的代码却不能。