Javascript 下拉列表的默认值也适用于正则表达式

Javascript 下拉列表的默认值也适用于正则表达式,javascript,jquery,Javascript,Jquery,我有两个字段,一个是“年份”下拉列表,另一个是输入VIN号的文本框。我让正则表达式按照我想要的方式工作,但我遇到的问题是,如果没有选择年份,它仍然会验证,因为VIN正在等待年份。如何输入尚未存在的日期或“选择年份”以同时应用于正则表达式 当我执行console.log(date)时,它返回0,并且验证正在命中第二个正则表达式,因为它是0,小于1981 不知何故,我不得不写不到1981,但大于0,我尝试了这么多不同的组合,只是似乎无法找到正确的答案 var date = Number($("#ve

我有两个字段,一个是“年份”下拉列表,另一个是输入VIN号的文本框。我让正则表达式按照我想要的方式工作,但我遇到的问题是,如果没有选择年份,它仍然会验证,因为VIN正在等待年份。如何输入尚未存在的日期或“选择年份”以同时应用于正则表达式

当我执行console.log(date)时,它返回0,并且验证正在命中第二个正则表达式,因为它是0,小于1981

不知何故,我不得不写不到1981,但大于0,我尝试了这么多不同的组合,只是似乎无法找到正确的答案

var date = Number($("#vehicleyear").val());
  var re;
  if (date >= 1981) {
    re = new RegExp("^[A-HJ-NPR-Za-hj-npr-z\\d]{8}[\\dX][A-HJ-NPR-Za-hj-npr-z\\d]{2}\\d{6}$");
  } else if (date < 1981) {
    re = new RegExp("^[A-Za-z\\d]{2,17}$");
  } else {}
  return vin.match(re);
}, 'Please enter valid VIN.');
var date=Number($(“#vehicleyear”).val();
var-re;
如果(日期>=1981){
re=newregexp(“^[A-HJ-NPR-Za-HJ-NPR-z\\d]{8}[\\dX][A-HJ-NPR-Za-HJ-NPR-z\\d]{2}\\d{6}$”;
}如有其他情况(日期<1981年){
re=newregexp(“^[A-Za-z\\d]{2,17}$”;
}else{}
返回vin匹配(re);
},“请输入有效的VIN。”);
我尝试在else语句中应用正则表达式,但也不起作用。(如果它不是任何其他东西,但仍然适用正则表达式)

HTML

<label for="vehicleyear">Year:</label>
  <select name="vehicleyear" id="vehicleyear" required>
    <option value="" selected="selected">Select Year</option>
    <option value="2017">2017</option>
    <option value="2016">2016</option>
    <!-- And so on -->
  </select>
年份:
选择年份
2017
2016

好的,转换为数字的空字符串是0,所以如果值为零,您要做的就是始终失败,换句话说,类似这样的事情:

if(date <= 0)
{
    return false;
}
// other if() after
var re;
if (date >= 1981)
{
...
if(日期=1981)
{
...

为什么不在验证VIN之前检查是否选择了年份?另外,空白的点是什么
else{}
?表单的HTML是什么样子的?而且,这看起来不像是右上角的完整功能,那么下拉菜单的HTML是什么样子的?每个菜单选项都必须有一个值。默认的空值是什么?请尝试添加
console.log(date)
查看它的外观。我假设您安装了调试工具并打开了控制台。当然,第二个if()的其他部分将在日期小于1981年时出现。但我认为您的主要问题是没有选择日期的情况。。。