RegEx Vinvalidation1980年前和1980年后

1981年,车辆识别号码(VIN)使用十七位数系统进行标准化。 在1981年之前,制造商使用自己公司独有的VIN,这些数字没有公认的标准,因此不同的制造商使用不同的格式.. http://www.crankshaftcoalition.com/wiki/VIN_decoding

它要求出售的所有越野车辆都包含17个字符的VIN,其中不包括字母I(i),O(o)或Q(q)(以避免与数字1和0混淆) 。 http://en.wikipedia.org/wiki/Vehicle_identification_number

所以我想要完成的是下降,如果从1980年到1900年的任何地方被选中,VIN将遵循制造商的指导或者根本不适用于字母I(i),O(o),或者可以使用Q(q)和任意数量的字符/数字。 但是如果1981年及以后选择RegEx来启动并要求使用表达式格式化我已经显示有效或无效的VIN。

暂时插入有效的VIN用于测试目的..如果删除最后一个数字,它将显示“无效的Vin”

任何建议或帮助将不胜感激!

http://jsfiddle.net/ommLz4th/1/

正则表达式

^[A-HJ-NPR-Z\\d]{8}[\\dX][A-HJ-NPR-Z\\d]{2}\\d{6}$ 

jQuery Vin Validator

  $(function() { $("#vin").on("keyup blur", function() { if (validateVin($("#vin").val())) { $("#result").css('color', 'green').html("Valid VIN"); $("#vin").removeClass("not-ok").addClass("ok"); } else { $("#result").css('color', 'red').html("Invalid VIN"); $("#vin").removeClass("ok").addClass("not-ok"); } }); }); function validateVin(vin) { var re = new RegExp("^[A-HJ-NPR-Z\\d]{8}[\\dX][A-HJ-NPR-Z\\d]{2}\\d{6}$"); return vin.match(re); } 

HTML

     

下拉以进行测试

  Choose Year 1985 1984 1983 1982 1981 1980 1979 1978 1977 1976 1975 1974  

实际下降

        Select Year  <option value="#i#" selected>#NumberFormat(i,"0000")#    

我不打算为你开发RegExps,但整体模式应该是这样的:

 $(function() { $("#vin").on("keyup blur", function() { if ( validateVin( this.value, Number($("#vehicleyear").val()) ) ) { $("#result").css('color', 'green').html("Valid VIN"); $("#vin").removeClass("not-ok").addClass("ok"); } else { $("#result").css('color', 'red').html("Invalid VIN"); $("#vin").removeClass("ok").addClass("not-ok"); } }); function validateVin(vin, date) { if(date > 1980) { var re = new RegExp("^[A-HJ-NPR-Z\\d]{8}[\\dX][A-HJ-NPR-Z\\d]{2}\\d{6}$"); return vin.match(re); } else { //Pre validation are rules to complex. We are forced to assume the vin is valid. //Though really at least a simple test would be preferable - eg vin.length >= 20 or whatever return true; } } }); 

请注意, vin date将传递给validateVin()从而允许代码进行分支。