JSFiddle - React, Tailwind, and code Playground

by shivaay123

JavaScript

const validCreditcard = cardnumb => {


  const ccErrors = [];
  ccErrors[0] = "Unknown card type";
  ccErrors[1] = "No card number provided";
  ccErrors[2] = "Credit card number is in invalid format";
  ccErrors[3] = "Credit card number is invalid";
  ccErrors[4] = "Credit card number has an inappropriate number of digits";
  ccErrors[5] = "Warning! This credit card number is associated with a scam attempt";


  const response = (success, message = null, type = null) => ({
      message,
      success,
      type
  });

  const validCardnumb = numb => {

      const regex = new RegExp("^[0-9]{13,19}$");
      if (!regex.test(numb)) {
          return false;
      }

      return luhnCheck(numb);
  }

  const luhnCheck = val => {
      let validsum = 0;
      let k = 1;


      for (let l = val.length - 1; l >= 0; l--) {
          let calck = 0;

          calck = Number(val.charAt(l)) * k;


          if (calck > 9) {
              validsum = validsum + 1;
              calck = calck - 10;
          }


          validsum = validsum + calck;


          if (k == 1) {
              k = 2;
          } else {
              k = 1;
          }
      }


      return (validsum % 10) == 0;
  }

  const cards = [];
  cards[0] = {
      name: "Visa",
      length: "13,16",
      prefixes: "4",
      checkdigit: true
  };
  cards[1] = {
      name: "MasterCard",
      length: "16",
      prefixes: "51,52,53,54,55",
      checkdigit: true
  };
  cards[2] = {
      name: "DinersClub",
      length: "14,16",
      prefixes: "36,38,54,55",
      checkdigit: true
  };
  cards[3] = {
      name: "CarteBlanche",
      length: "14",
      prefixes: "300,301,302,303,304,305",
      checkdigit: true
  };
  cards[4] = {
      name: "AmEx",
      length: "15",
      prefixes: "34,37",
      checkdigit: true
  };
  cards[5] = {
      name: "Discover",
      length: "16",
      prefixes: "6011,622,64,65",
      checkdigit: true
  };
  cards[6] = {
      name: "JCB",
      length:...