在 JavaScript 中使用正则表达式验证信用卡输入

2024-04-27

我一直在努力完成这件事但没有成功。我正在使用正则表达式根据通过单选按钮选择的信用卡类型来验证用户输入的信用卡号。 但我一直保持警惕if陈述。看起来所有的if else语句经过测试。

There is the HTML code fragment: 

<code>
<p><b>Payment Information:</b></p>
         <fieldset>
            <input type="radio" name="payment" value="Visa" id="visa" />Visa &nbsp;
            <input type="radio" name="payment" value="Master Card" />Master Card &nbsp;
            <input type="radio" name="payment" value="American Express" />American Express &nbsp;
            <input type="radio" name="payment" value="Discover" />Discover <br /><br />
            <label>Card Number:</label>
            <input type="text" name="cardNumber" id="cardNum" size="30" value="" onblur="ValidateCreditCardNumber()" />
</code>



And there is my javascript function :

<code>

function ValidateCreditCardNumber(){

    var ccNum = document.getElementById("cardNum").value;



    var visaRegEx = /^(?:4[0-9]{12}(?:[0-9]{3})?)$/;
    var mastercardRegEx = /^(?:5[1-5][0-9]{14})$/;
    var amexpRegEx = /^(?:3[47][0-9]{13})$/;
    var discovRegEx = /^(?:6(?:011|5[0-9][0-9])[0-9]{12})$/; 


    if (visaRegEx.test(ccNum) === false ){ // Visa validation
       alert("Please provide a valid Visa number!");   
        }  
      else  
        {  
         alert("Thank You!");  
        }  

    if (mastercardRegEx.test(ccNum) === false){ // MasterCard validation
        alert("Please provide a valid MasterCard number!");  
        }  
      else  
        {  
        alert("Thank You!");  
        } 

    if(amexpRegEx.test(ccNum) === false){ // Amex  validation
        alert("Not a valid America Express number!");  
        }  
      else  
        {   
        alert("Thank You!");  
        } 

    if (discovRegEx.test(ccNum) === false){ // Discover validation
        alert("Please provide a valid Discover number!"); 
        }  
      else  
        {  
        alert("Thank You!");  
        } 


    }
</code>


Any kind of help or advice would be really appreciated.

你有4个不同的if在你的情况下,当前一个块失败时,它会击中每个块。

Replace if with if else,这样 if 只会验证单个用例。 此外,您不需要让用户知道他正在尝试输入的卡的具体类型。只需输入一条有效数字的消息就足够了。

function ValidateCreditCardNumber() {

  var ccNum = document.getElementById("cardNum").value;
  var visaRegEx = /^(?:4[0-9]{12}(?:[0-9]{3})?)$/;
  var mastercardRegEx = /^(?:5[1-5][0-9]{14})$/;
  var amexpRegEx = /^(?:3[47][0-9]{13})$/;
  var discovRegEx = /^(?:6(?:011|5[0-9][0-9])[0-9]{12})$/;
  var isValid = false;

  if (visaRegEx.test(ccNum)) {
    isValid = true;
  } else if(mastercardRegEx.test(ccNum)) {
    isValid = true;
  } else if(amexpRegEx.test(ccNum)) {
    isValid = true;
  } else if(discovRegEx.test(ccNum)) {
    isValid = true;
  }

  if(isValid) {
     alert("Thank You!");
  } else {
     alert("Please provide a valid Visa number!");
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 JavaScript 中使用正则表达式验证信用卡输入 的相关文章

  • CSS 文本装饰:反向

    我很惊讶 CSS 中没有 text decoration reverse 因为使用 JavaScript 来实现似乎非常尴尬 IE 将元素的前景色和背景色分别设置为父元素的背景色和前景色 我注意到了 JavaScript 技术here ht
  • 如何使用 javascript 选择页面上的任意文本?

    假设我有一个 contentEditablediv 用户可以编辑和更改其中的文本和元素 我如何任意更改此选择div用JavaScript 我所说的 更改 并不是指 更改用户选择的内容 我的意思是实际上更改what被选中 然后 用户应该能够在
  • JavaScript:解决意外字符“#”

    介绍 我的 React 应用程序可以执行npm run build在开发模式下 webpack config dev js 但不在生产模式下 webpack config prod js 抛出以下错误 Module parse failed
  • 处理量角器中的未知错误

    我有一个protractor通过配置多个浏览器进行设置multiCapabilities 在 browserstack 上运行测试 我的主要量角器规格 测试之一包含以下内容afterEach block afterEach function
  • 在 IOS9 中的 Cordova 应用程序上使用 JQuery/Javascript 的 window.history 问题

    我在 IOS9 测试版 下使用 Cordova 应用程序时遇到问题 我正在使用最新的 Cordova 和 JQuery 移动版本 window history 未更新 导致以下故障 window history go 1 无法返回页面 即使
  • 使用Web蓝牙API时找不到移动设备

    我正在学习 Web 蓝牙 API 使用 google 开发控制台 我无法找到我的移动设备 还尝试了 github 上提供的演示 https github com WebBluetoothCG demos https github com W
  • 现在 JavaScript 的无限循环会导致浏览器崩溃吗?

    我正在学习 JavaScript 对编程很陌生 碰巧遇到了这些无限循环 据说这些循环会永远持续下去并使浏览器崩溃 但是当我用这些代码创建一个循环时 i 0 while i lt 10 document write i 浏览器只是继续加载它
  • 页面刷新后如何注销用户?

    我正在跟进谷歌的指南 https developers google com identity sign in web sign in sign out a user注销用户 考虑到gapi auth2刷新页面后将是未定义的 我正在做 if
  • 返回 false 不停止表单提交

    我的目的 如果用户字段和密码字段为空 我想停止表单提交 这是我正在尝试的代码
  • Chrome 扩展 |有什么方法可以让 chrome.storage.local.get() 返回一些东西吗?

    在我的 chrome 扩展中 我需要使用 chrome 存储 在我的后台脚本中 我首先创建一个对象并将其添加到 chrome 存储中 然后我想从那里获取我的对象并返回 像这样的东西 var obj chrome storage local
  • 将键值对添加到数组中的所有对象

    我想向数组中的所有对象添加一个键 值参数 eg var arrOfObj name eve name john name jane 现在我想向所有对象添加一个新参数 isActive 以便生成的数组如下所示 eg name eve isAc
  • 无法导入@material-ui/core/styles/MuiThemeProvider

    我正在开发一个 React 项目 使用 Material UI React 组件 我想进口MuiThemeProvider in src index js像这样import MuiThemeProvider from material ui
  • Dojo DataGrid (DGrid) 添加复选框列

    我在用DojoDgrid 但是我正在尝试添加一个复选框列 但我不确定该方法 我一直在看的大多数教程都遵循不同的代码结构 我无法创建复选框列 我想创建一个复选框列来选择行 Code 这里还有一个Fiddle http jsfiddle net
  • PHP 中的 Javascript“unes​​cape”

    我的图像主机有一个 Google Chrome 扩展程序 它会向我的网站发送一个 URL 该网址得到encoded通过 JavaScript 的escape method 编码的 URLescape看起来像这样 http 253A 4 bp
  • 如何防止机器人程序和垃圾邮件 API 请求?

    我正在使用react native 开发一个Android 应用程序 该应用程序与我正在为该应用程序开发的API 进行通信 该 API 是使用 Laravel 和 Laravel Passport 构建的 我知道 Android 应用程序可
  • JavaScript 中最大长度的正则表达式

    如何限制与正则表达式匹配的字符串的长度 我假设var sixCharsRegEx 6 7 只匹配长度为 6 或 7 的字符串 but no http jsfiddle net FEXbB http jsfiddle net FEXbB 我缺
  • 创建地图后向 Google 地图 v3 添加标记

    我对使用 Google Maps API 比较陌生 现在我正在开发一个项目 用户可以选择各种搜索过滤器并查看结果自动显示在地图上 而无需重新加载页面 到目前为止 我的方法是创建一个控制地图的 Javascript 对象 以便我可以按照我的意
  • 通过 JavaScript 获取页面/iframe 的编码

    我想通过 JavaScript 或浏览器中的其他一些 API 以编程方式确定页面的编码 我想要这些信息的原因是因为我试图对主要浏览器支持的字符编码进行模糊测试 显然仅仅因为我发送了适当的 内容类型 并不意味着浏览器会使用编码做正确的事情 欢
  • 如何在 jQuery/javascript 中获取边框宽度

    如何解析边框宽度 style border solid 1px black 在 jQuery javascript 中 elem css border width 不这样做 注意我需要解析 css 的宽度 因为元素可能是display no
  • 字符串中unicode字符的正则表达式

    我正在使用 C 进行一些 OCR 工作 并提取了我需要使用的文本 现在我需要使用正则表达式解析一行 string checkNum string routingNum string accountNum Regex regEx new Re

随机推荐

  • 符号的函数定义为 void:declare-function

    emacs 新手 OSX 上的 GNU Emacs 22 1 1 按照说明安装了邪恶 我得到 Symbol s function definition is void declare function emacs debug init gi
  • 通过检测 1.6 目标应用程序是否是 2.1 设备来显示动态壁纸?

    我们正在使用目标 SDK 1 6 构建 Android 应用程序 因此它将在 1 6 及更高版本的设备上运行 我们希望支持动态壁纸 我们知道动态壁纸仅限 2 1 有没有一种方法可以构建一个以 1 6 SDK 作为目标的应用程序 但检测它运行
  • 自定义 lint 规则,确保不调用特定方法

    我想确保在我的 Android 应用程序 Java 和 Kotlin 代码中 中不会调用特定类的特定方法 假设 我有一个名为Bar有两种方法 allowed and disallowed 这是代码 package com public cl
  • 无法查看数据选择器上的当前数据

    我创建了一个自定义数据选择器 其中显示 1950 年至 2016 年的年份 现在 当我第一次打开选择器时 我想设置当天的当前数据 但我无法将其设置为当前数据 第一次启动后 它的工作原理与我希望的完全一样 这是我迄今为止尝试过的代码 priv
  • Wireshark 解剖器 - 如何将 dissectortable:add(pattern, dissector) 与任何模式一起使用?

    我正在为 Wireshark 创建一个自定义解析器 我将我的解剖器添加到解剖器表中 就像这样 udp table DissectorTable get udp port udp table add 7777 my proto 然而 我的解析
  • NullValueHandling.Ignore 使用 JsonConverter::WriteJson

    我正在尝试执行自定义序列化 所有快乐路径代码都可以工作 但空值路径的行为并不像我想要的那样 我已将序列化器设置设置为NullValueHandling Ignore我的对象图的其他部分为空 并且不使用我的自定义序列化 已删除空值 看起来 N
  • R/d3heatmap/shiny - 有没有办法在 d3 工具提示中嵌入图像?

    我想在滚动单元格时在 d3 工具提示中嵌入图像 而不是默认的行 列 值数据 library shiny library d3heatmap ui lt shinyUI fluidPage titlePanel Old Faithful Ge
  • 将表格行换行到下一行

    table tr td testtesttesttest td td testtesttesttest td tr table 我想如果表格不适合屏幕 那么表格的第二个单元格将被转移到另一行 不是单元格中的文本 而是整个单元格 将单元格更改
  • SwiftUI 列表未使用 ForEach 正确更新

    我正在尝试使用带有两个 ForEach 循环的列表创建收藏夹功能 当我单击按钮时 该项目会移动到正确的部分 但按钮图像和功能不会更新 我是否遗漏或做错了什么 如果我导航到另一个视图并返回 列表最初会正确呈现 但如果我单击按钮 仍然会表现出相
  • 为什么我的 QGestureRecognizer 收不到触摸事件?

    上下文 我正在尝试创建一个类似推子的小部件 它可以在同一视图中具有多个实例 每个实例都可以由不同的手指同时控制 我想用Qt的手势识别系统 http qt project org doc qt 4 8 gestures overview ht
  • Ruby 将不可打印的字符转换为数字

    我有一个包含不可打印字符的字符串 我目前正在做的是将它们替换为波浪号 使用 string gsub print 但是 我实际上想将它们转换为整数值 我尝试了这个 但它总是输出0 string gsub print 1 to i 想法 字符串
  • 允许远程连接到不同域中的 SQL Server 的防火墙规则

    我最近安装了SQL Server Express 2014在一系列运行 Windows Server 2012 的计算机上 总共七台计算机 除 1 人外 其余所有人都住在同一个地方local domain company local 一台流
  • PHP 脚本语言还是编程语言? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我一直不明白为什么PHP被称为 脚本语言 而不是 编程语言 我将自己介绍为 PHP 程序员 是错误的吗 我应该是 PHP 脚本编写者 吗 编程语言和脚
  • IIS 7.5:对网站的初始请求永远不会加载

    当我第一次浏览我的网站时 互联网不断旋转 加载 如果我两秒钟后尝试再次加载它 一切都会正常 就好像它 睡着了 一样 我想这一定和 回收 有关 我已将 空闲超时 设置为 0 将回收 定期时间间隔 设置为 0 在浏览我的网站之前 我查看了 工作
  • excel vba 将 system.collections.hashmap 导入模块

    从我的内心微软 Excel 2010安装我已经打开了Visual Basic 编辑器 选项卡开发工具 gt Visual Basic 在 的里面Visual Basic 编辑器我右键单击进入项目窗口并创建了一个module 插入 gt 模块
  • Rspec 控制器错误需要 <"index"> 但使用 <""> 渲染

    作为测试新手 我正在努力让一些控制器测试通过 以下控制器测试会引发错误 expecting lt index gt but rendering with lt gt 我的控制器规格之一具有以下内容 require spec helper d
  • Android AudioRecord 与 MediaRecorder 录制音频

    我想在我的 Android 手机上录制人声 我注意到 Android 有两个类可以做到这一点 录音带 http developer android com reference android media AudioRecord html a
  • SlideToggle() 可以检测 SlideUp 或 SlideDown 吗?

    I know hover 默认设置为handIn and handOut 但是我能检测到吗slideUp and SlideDown inside SlideToggle 有这样的代码 divName slideToggle functio
  • scala.Equals 特征中的 canEqual()

    从源代码来看scala Equals scala here https github com scala scala blob 2 11 x src library scala Equals scala package scala trai
  • 在 JavaScript 中使用正则表达式验证信用卡输入

    我一直在努力完成这件事但没有成功 我正在使用正则表达式根据通过单选按钮选择的信用卡类型来验证用户输入的信用卡号 但我一直保持警惕if陈述 看起来所有的if else语句经过测试 There is the HTML code fragment