- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
有没有人创建过 VIN 验证器?我正在尝试创建一个文本框,用户将在其中输入车辆识别号,然后 JS/jQuery 将验证其是否正确,以防他们输入错误的号码。
我是 JS/jQuery 的新手,找到了一些示例,但当然无法让它们正常工作......任何人有任何想法或建议,我将不胜感激,特别是如果你能告诉我如何设置下面的内容才能正常工作!
注意:isVin() function由 cflib.org 提供
HTML:
<label name="vin">VIN</label>
<input type="text" name="vin" />
冷聚变:
<cfscript>
/**
* US Vehicle Identification Number (VIN) validation.
* version 1.0 by Christopher Jordan
* version 1.1 by RHPT, Peter Boughton & Adam Cameron (original function rejected valid VINs)
*
* @param v VIN to validate (Required)
* @return Returns a boolean.
* @author Christopher Jordan (cjordan@placs.net)
* @version 1, February 19, 2013
*/
function isVIN(v) {
var i = "";
var d = "";
var checkDigit = "";
var sum = 0;
var weights = [8, 7, 6, 5, 4, 3, 2, 10, 0, 9, 8, 7, 6, 5, 4, 3, 2];
var transliterations = {
a = 1, b = 2, c = 3, d = 4, e = 5, f = 6, g = 7, h = 8,
j = 1, k = 2, l = 3, m = 4, n = 5, p = 7, r = 9,
s = 2, t = 3, u = 4, v = 5, w = 6, x = 7, y = 8, z = 9
};
var vinRegex = "(?x) ## allow comments
^ ## from the start of the string
## see http://en.wikipedia.org/wiki/Vehicle_Identification_Number for VIN spec
[A-Z\d]{3} ## World Manufacturer Identifier (WMI)
[A-Z\d]{5} ## Vehicle decription section (VDS)
[\dX] ## Check digit
[A-Z\d] ## Model year
[A-Z\d] ## Plant
\d{6} ## Sequence
$ ## to the end of the string
";
if (! REFindNoCase(vinRegex, arguments.v)) {
return false;
}
for (i = 1; i <= len(arguments.v); i++) {
d = mid(arguments.v, i, 1);
if (! isNumeric(d)) {
sum += transliterations[d] * weights[i];
} else {
sum += d * weights[i];
}
}
checkDigit = sum % 11;
if (checkDigit == 10) {
checkDigit = "x";
}
return checkDigit == mid(arguments.v, 9, 1);
}
</cfscript>
测试代码:
<cfoutput>
<cfset vin = "1GNDM19ZXRB170064">
#vin#: #isVin(vin)#<br />
<cfset vin = "1FAFP40634F172825">
#vin#: #isVin(vin)#<br />
</cfoutput>
最佳答案
如果您要解码在北美销售的车辆的 VIN1,您可以验证以下内容:
由于您将在用户输入 VIN 时实时检查它,因此保持高效非常重要。这意味着在用户输入时快速失败。虽然您可以使用正则表达式来完成此任务,但它比简单地检查 VIN 的长度要慢得多。一旦 VIN 为 17 位长,您就可以验证校验位(顺便说一下,校验位本身也比正则表达式更快 - 见下文)。
正则表达式不适用于 VIN 验证,原因如下:
表现。它不像简单地检查长度那么快,而且速度的权衡并不能使您在准确性上有太大的提高,因为您无法验证校验位。
准确性。虽然您确实可以确保 VIN 在长度和有效字符方面符合正确的模式,但这还不够。 KNDJB723025140702
是有效的 VIN,而 KNDJB723025140703
不是(唯一的区别是最后一个数字)。正则表达式解决方案将显示两个 VIN 均有效,而第二个为误报,因此不正确。
维基百科有一个 really good script 用于执行校验位验证,如果 VIN 是 17 位数字,它也会很快失败,因为仅验证校验位。
In my own testing,下面的脚本必须比使用正则表达式验证 VIN 快得多(大约 40 倍),并且它具有返回准确结果的额外好处。
$(function() {
var $ctrl = $('#vin'),
$msg = $('#validation-message');
$ctrl.keyup(function() {
if (validateVin($ctrl.val())) {
$msg.html("VIN is valid!");
} else {
$msg.html("VIN is not valid");
}
});
});
function validateVin(vin) {
return validate(vin);
// source: https://en.wikipedia.org/wiki/Vehicle_identification_number#Example_Code
// ---------------------------------------------------------------------------------
function transliterate(c) {
return '0123456789.ABCDEFGH..JKLMN.P.R..STUVWXYZ'.indexOf(c) % 10;
}
function get_check_digit(vin) {
var map = '0123456789X';
var weights = '8765432X098765432';
var sum = 0;
for (var i = 0; i < 17; ++i)
sum += transliterate(vin[i]) * map.indexOf(weights[i]);
return map[sum % 11];
}
function validate(vin) {
if (vin.length !== 17) return false;
return get_check_digit(vin) === vin[8];
}
// ---------------------------------------------------------------------------------
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
VIN:
<input id="vin" type="text" />
<span id="validation-message"></span>
[1] 在欧盟销售的车辆通常不使用校验位,有些汽车甚至可以使用 18 位数字(梅赛德斯)。
关于JavaScript/jQuery VIN 验证器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26407015/
我根据 http://en.wikipedia.org/wiki/Vehicle_identification_number 编写了一个 VIN 验证正则表达式但当我尝试运行一些测试时,它不接受一些有
我正在尝试将 this PHP validation code 转换为 ColdFusion。但是,我无法让我的 CF 版本正确验证 VIN。我希望有人能阐明我所缺少的东西。 functio
我想使用 javascript 分解数组中的 VIN,可能使用正则表达式,然后使用某种循环... 以下是读取 VIN 的方法: http://forum.cardekho.com/topic/600-
我设计了一些Vehicle Identification Number (VIN)不同 OEM 的解码器。关于 VIN 号码的事情……尽管有些标准化,但每个 OEM 都可以重载字符位置代码并以不同的方
有没有人创建过 VIN 验证器?我正在尝试创建一个文本框,用户将在其中输入车辆识别号,然后 JS/jQuery 将验证其是否正确,以防他们输入错误的号码。 我是 JS/jQuery 的新手,找到了一些
如何验证 Vehicle Identification Number用PHP?我只需要检查输入的 VIN 号码是否正确。 最佳答案 这是我使用维基百科文章中的示例快速编写的内容。 不保证完美或无错误或
我以前从未将 API 集成到我的任何应用程序中。我想集成一个基本的 VIN 解码器 API,它将在提交车辆的 VIN 后提供基本的车辆信息。我想使用 NHTSA 车辆 API,因为它免费且简单。我最熟
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and th
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 6 年前。
我一直在与 Autocheck 合作,但他对 PHP 完全没有了解。我创建了一个页面,当客户单击链接时,我必须将其发送到页面。显示的页面必须显示自动检查车辆历史报告。 我已经创建了页面,并且链接完全按
所以我有一个 jQuery 函数来验证 VIN 是否有效。我想做的是尝试弄清楚 CSS 它将在文本框的哪个位置圈出并在正确或正确的情况下给出绿色复选标记如果它不正确,则带有红色 X 的红色边框。底部的
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 6 年前。
我正在开发一个需要 VIN 扫描的 Android 应用程序。我没有找到任何好的库或 sdk。我试过 Zxing,但它不进行 VIN 扫描。谁能帮我在我的应用程序中实现 VIN 扫描。最好使用任何 S
我正在使用 ZBar iOS SDK 扫描应用程序上的 VIN 条形码。但它有时会在 VIN 前面额外添加一个“I”字符并省略最后一个字符。 此外,我正在使用 CODE 39 符号系统。这是正确的还是
我需要使用 plxKiwi-2 wifi obd2 设备从汽车 Controller 获取 VIN 号。我正在获取其他信息,例如汽车转速、速度、 throttle 位置等。格式正确。但是当我请求 VI
如果我发送超过 12 个 VIN,我会遇到一个问题(HTTP STATUS 400 Bad Request)使用代码解码 VIN,但如果我通过粘贴到网站发送超过 100 个的列表,我会得到结果。 我正
我目前正在从事一个项目,我需要在其中找到 VIN 编号的制造商、型号和年份。我有一个包含 300 个不同 VIN 号码的列表。遍历每个单独的 VIN 编号并手动将制造商、型号和年份输入 excel 非
1981 年,车辆识别号 (VIN) 使用 17 位系统进行了标准化。在 1981 年之前,制造商使用自己公司独有的 VIN,并且这些数字没有公认的标准,因此不同的制造商使用不同的格式。 http:/
有谁知道以 PHP、Perl 或 Python(或任何其他语言,我可以轻松转换代码)作为开源/免费软件提供的 ISO 3779 车辆 VIN 解码器库? 即使只是解码 WMI 部分(前 3 个位置)也
我正在为当前项目使用 MVC 4。项目通常处理车辆并为不同的用途识别正确的车辆。 我有以下模型。 public class Vehicle { [Required] public stri
我是一名优秀的程序员,十分优秀!