javascript验证

We all know that JavaScript shouldn't be a web form's only method of validation but client side validation does prevent unnecessary server side processing when user input is obviously invalid.  I'd also consider client side form validation a usability booster (...or nightmare when done poorly.)  I often hear developers complain about how difficult validating credit cards can be, especially when only supporting specific credit cards.  Luckily the Dojo Toolkit includes dojox.validate.creditCard, a resource capable of efficiently validating a credit card.  Better yet, you can easily take its logic and create you own validator.

我们都知道JavaScript不应只是Web表单的唯一验证方法,但是当用户输入显然无效时,客户端验证确实可以防止不必要的服务器端处理。 我还会考虑对客户端表单进行验证,这会增强可用性(...或做得不好时的噩梦。)我经常听到开发人员抱怨验证信用卡有多困难,尤其是仅支持特定信用卡时。 幸运的是,Dojo工具包包含dojox.validate.creditCard ,该资源能够有效地验证信用卡。 更好的是,您可以轻松地采用其逻辑并创建自己的验证器。

Dojo JavaScript (The Dojo JavaScript)

The validation code is quite compact but well-commented;  read those comments as you look at the code:

验证代码非常紧凑,但是注释很好。 在查看代码时,请阅读这些注释:


dojo.provide("dojox.validate.creditCard");
/*=====
dojox.validate.creditCard = {
// summary:
//      Module provides validation functions for Credit Cards, using account number
//      rules in conjunction with the Luhn algorigthm, with a plugable card info database.
};
=====*/
dojo.require("dojox.validate._base");
dojox.validate._cardInfo = {
// summary: A dictionary list of credit card abbreviations
//
// description:
//
//      A hash of valid CC abbreviations and regular expressions
//
//      mc: Mastercard
//      ec: Eurocard
//      vi: Visa
//      ax: American Express
//      dc: Diners Club
//      bl: Carte Blanch
//      di: Discover
//      jcb: JCB
//      er: Enroute
//
//  example:
//      Define your own card, gift-card, whatever. Starts with 7,
//      is 15 total length.
//  | dojo.mixin(dojox.validate._cardInfo, {
//  |   "my":"7[0-9]{14}"
//  | });
'mc':'5[1-5][0-9]{14}',
'ec':'5[1-5][0-9]{14}',
'vi':'4(?:[0-9]{12}|[0-9]{15})',
'ax':'3[47][0-9]{13}',
'dc':'3(?:0[0-5][0-9]{11}|[68][0-9]{12})',
'bl':'3(?:0[0-5][0-9]{11}|[68][0-9]{12})',
'di':'6011[0-9]{12}',
'jcb':'(?:3[0-9]{15}|(2131|1800)[0-9]{11})',
'er':'2(?:014|149)[0-9]{11}'
}
dojox.validate.isValidCreditCard = function(value, ccType){
// summary: Validate a credit card number by type with Luhn checking.
//
// description:
//      Checks if a credit card type matches the # scheme in a passed value, and if
//      the Luhn checksum is accurate (unless its an Enroute card, in which case
//      the checkSum is skipped), returning a Boolean to check against.
//
// value: String|Int
//      A Value (credit card number) to validate
//
// ccType: String
//      A credit-card abbreviation.
//
// example:
// |    if(dojox.validate.isValidCreditCard("12345", "mc")){
// |        console.log('inconceivable');
// |    }
return ((ccType.toLowerCase() == 'er' || dojox.validate.isValidLuhn(value)) &&
dojox.validate.isValidCreditCardNumber(value, ccType.toLowerCase())); // Boolean
}
dojox.validate.isValidCreditCardNumber = function(value, ccType){
// summary:
//      Checks if value matches the pattern for that card or any card types if none is specified
//
// value: String|Int
//      CC #, white spaces and dashes are ignored
//
// ccType: String?
//      One of the abbreviation values in `dojox.validate._cardInfo` --
//      if Omitted, function returns a `|` delimited string of matching card types,
//      or false if no matches found.
value = String(value).replace(/[- ]/g,''); //ignore dashes and whitespaces
var cardinfo = dojox.validate._cardInfo, results = [];
if(ccType){
var expr = '^' + cardinfo[ccType.toLowerCase()] + '$';
return expr ? !!value.match(expr) : false; // boolean
}
for(var p in cardinfo){
if(value.match('^' + cardinfo[p] + '$')){
results.push(p);
}
}
return results.length ? results.join('|') : false; // String | boolean
}
dojox.validate.isValidCvv = function(/* String|Int */value, /* String */ccType) {
// summary:
//      Validate the security code (CCV) for a passed credit-card type.
//
// description:
//
// value:
if(!dojo.isString(value)){
value = String(value);
}
var format;
switch (ccType.toLowerCase()){
case 'mc':
case 'ec':
case 'vi':
case 'di':
format = '###';
break;
case 'ax':
format = '####';
break;
}
return !!format && value.length && dojox.validate.isNumberFormat(value, { format: format }); // Boolean
}

You would use the code above by requiring the resource and running the isValidCreditCard method, passing the value and card type.  But what if you don't use the Dojo Toolkit?  You can pull the code out of Dojo and into your own application:

您将需要资源并运行isValidCreditCard方法,传递值和卡类型来使用上面的代码。 但是,如果您不使用Dojo Toolkit,该怎么办? 您可以将代码从Dojo中拉出,并放入自己的应用程序中:


// Create an object
var creditCardValidator = {};
// Pin the cards to them
creditCardValidator.cards = {
'mc':'5[1-5][0-9]{14}',
'ec':'5[1-5][0-9]{14}',
'vi':'4(?:[0-9]{12}|[0-9]{15})',
'ax':'3[47][0-9]{13}',
'dc':'3(?:0[0-5][0-9]{11}|[68][0-9]{12})',
'bl':'3(?:0[0-5][0-9]{11}|[68][0-9]{12})',
'di':'6011[0-9]{12}',
'jcb':'(?:3[0-9]{15}|(2131|1800)[0-9]{11})',
'er':'2(?:014|149)[0-9]{11}'
};
// Add the card validator to them
creditCardValidator.validate = function(value,ccType) {
value = String(value).replace(/[- ]/g,''); //ignore dashes and whitespaces
var cardinfo = creditCardValidator.cards, results = [];
if(ccType){
var expr = '^' + cardinfo[ccType.toLowerCase()] + '$';
return expr ? !!value.match(expr) : false; // boolean
}
for(var p in cardinfo){
if(value.match('^' + cardinfo[p] + '$')){
results.push(p);
}
}
return results.length ? results.join('|') : false; // String | boolean
};

With the creditCardValidator object complete, it's time to use the resource:

完成creditCardValidator对象后,就可以使用该资源了:


if(!creditCardValidator.validate(document.id("creditCardField"))) {
alert("Invalid credit card!");
}

There you have it:  simple credit card validation with code taken from the Dojo Toolkit.  Problem solved!

在那里,您可以使用来自Dojo Toolkit的代码进行简单的信用卡验证。 问题解决了!

翻译自: https://davidwalsh.name/validate-credit-cards

javascript验证


http://www.taodudu.cc/news/show-5310192.html

相关文章:

  • 面试必备:什么时候要打破双亲委派机制?什么是双亲委派? (图解+秒懂+史上最全)
  • delivery route配送路线
  • Kubernetes Ingress(和网络)的Why以及How
  • SMPP是一种通用的短信接口协议
  • osgi Quick Start
  • osgi框架的应用_OSGi enRoute – OSGi应用程序的新框架
  • 机器学习算法之监督学习与非监督学习
  • 监督与非监督学习的区别
  • 监督学习和非监督学习中的算法分类
  • 机器学习之监督学习和 非监督学习区别
  • 机器学习——监督学习、非监督学习、半监督式学习、增强学习
  • 机器学习、监督学习、非监督学习、强化学习传统机器学习、深度学习、迁移学习基本概念
  • 机器学习的划分:监督学习、非监督学习、强化学习、进化学习 概述 (二)
  • 机器学习、监督学习、非监督学习、强化学习、深度学习、迁移学习
  • 什么是监督学习非监督学习,强化学习
  • 机器学习入门(九):非监督学习:5种聚类算法+2种评估模型
  • 机器学习_监督学习、非监督学习、半监督学习以及强化学习概念介绍
  • 机器学习的划分:监督学习、非监督学习、强化学习、进化学习
  • 【机器学习与深度学习理论要点】05.监督学习,非监督学习概念及应用场景
  • 【Pytorch深度学习50篇】·······第三篇:【非监督学习】【训练篇】
  • 2 监督学习与非监督学习
  • 监督学习、非监督学习、半监督学习
  • 机器学习(一)监督学习,非监督学习和强化学习
  • 十五、非监督学习
  • 五、非监督学习
  • MySQL~B+树索引(聚簇、非聚簇)和一些B+树索引的注意点
  • 点聚weboffice在ie,firefox,chrome下的区别
  • ArcGIS JavaScript api实现点聚合
  • clusterLayer点聚合进阶
  • 点聚WebOffice-使用(更新中)

javascript验证_使用JavaScript验证信用卡相关推荐

  1. javascript 注入_注入JavaScript牟利:如何检测和阻止撇取者

    javascript 注入 In 2019 British Airways was fined a remarkable £183 million for a data breach of its s ...

  2. javascript 框架_克服JavaScript框架疲劳

    javascript 框架 by Tero Parviainen 通过Tero Parviainen 克服JavaScript框架疲劳 (Overcoming JavaScript Framework ...

  3. javascript原型_使用JavaScript的示例报告卡Web应用程序原型

    javascript原型 Hi! At times, beginners always find it hard getting the application of the theory they ...

  4. javascript 模板_了解JavaScript中的模板文字

    javascript 模板 The author selected the COVID-19 Relief Fund to receive a donation as part of the Writ ...

  5. javascript教程_最好JavaScript教程

    javascript教程 JavaScript is the most widely used scripting language on Earth. And it has the largest ...

  6. twitter验证_社交网络身份验证:Twitter和Facebook

    twitter验证 In the previous parts of this series, we created our initial interfaces, set up our Google ...

  7. javascript控制台_使用JavaScript控制画布

    javascript控制台 您的指南 (YOUR GUIDE TO) Welcome readers from ◎ Your Guide to Coding Creativity on the Can ...

  8. javascript速度_使用JavaScript设置视频播放速度

    javascript速度 I love that media has moved from custom plugins (Flash-gross) to basic HTML <video&g ...

  9. javascript功能_功能性JavaScript简介

    javascript功能 Hey everybody! I've written a book called Discover Functional JavaScript, and it's now ...

最新文章

  1. Python全栈开发——描述符
  2. ASP用DSN连接数sql数据库
  3. python所有变量更新_PYTHON:使用python变量更新MULTIPLE COLUMNS
  4. Java_关于App class loader的总结
  5. 二端口网络的归一化转移矩阵[a]
  6. python vimdiff_Vim实践与学习-09其他
  7. function传值传字符串,然后Ajax url传值的时候传这个装字符串的变量
  8. USB学习笔记--USB枚举过程
  9. 5款精美APP原型设计模板,触手可得
  10. 地理可视化绘制——中国分省多年GDP绘制
  11. 郑捷《机器学习算法原理与编程实践》学习笔记(第六章 神经网络初步)6.3 自组织特征映射神经网路(SOM)...
  12. Unity鼠标控制3D物体的移动、旋转、缩放
  13. 单片机8255c语言程序,51单片机8255驱动C程序
  14. 手风琴效果案例(jQuery)
  15. 微博html5版打不开,PC端网页版微博就是打不开是什么问题啊!缓 – 手机爱问
  16. Android进程保活——双进程守护
  17. 香港金融中心谁与争锋
  18. 触摸屏驱动和按键驱动冲突-----解决方法
  19. CRM实施的目的是什么
  20. 最详细UWB技术及特点介绍

热门文章

  1. Linux安全检查脚本
  2. 安洵杯-crackme-wp
  3. 流水线与并行处理概述
  4. 湘潭市政府召开常务会议 部署加快建设新型智慧城市
  5. 外卖分销小程序系统搭建
  6. 树状数组 数据结构详解与模板(可能是最详细的了)
  7. 什么是机房监控系统(机房监控系统功能特点)
  8. outlook批量下载邮件 统计
  9. 2017全国计算机二级office考试时间,2017年全国计算机二级MS Office高级应用考试大纲...
  10. 1929. 数组串联【我亦无他唯手熟尔】