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()
从而允许代码进行分支。