Python program to check credit card number is valid or not


Suppose we have a credit card number. We have to check whether the card number is valid or not. The card numbers have certain properties −

  • It will start with 4, 5 and 6

  • It will be 16 digits’ long

  • Numbers must contain only digits

  • It may have digits in four groups separated by '-'

  • It must not use any other separator like space or underscore

  • It must not have 4 or more consecutive same digits

So, if the input is like s = "5423-2578-8632-6589", then the output will be True

To solve this, we will follow these steps −

  • if number of '-' in s is greater than 0, then
    • a := a list of parts separated by "-"
    • p:= 1
    • if size of a is not same as 4, then
      • p:= null
      • a:= blank list
    • for each b in a, do
      • if size of b is not same as 4, then
        • p:= null
        • come out from loop
  • otherwise,
    • p := search a substring which is starting with 4 or 5 or 6 and remaining are numbers of 15 digits long
    • s := remove "-" from s
    • q := search substring where 4 or more consecutive characters are same
    • if p is not null and q is null, then
      • return True
    • otherwise,
      • return False

Example

Let us see the following implementation to get better understanding

import re

def solve(s):
   if s.count("-")>0:
      a = s.split("-")
      p=1
      if len(a)!=4:
         p=None
         a=[]
      for b in a:
         if len(b)!=4:
            p=None
            break
         else:
            p = re.search("[456][0-9]{15}",s)
         s = s.replace("-","")
         q = re.search(".*([0-9])\1{3}.*",s)

         if p!=None and q==None:
            return True
         else:
            return False

s = "5423-2578-8632-6589"
print(solve(s))

Input

"5423-2578-8632-6589"

Output

False

Updated on: 12-Oct-2021

3K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements