We use cookies to ensure you have the best browsing experience on our website. Please read our cookie policy for more information about how we use cookies.
Validating Credit Card Numbers
Validating Credit Card Numbers
+ 0 comments The best I can do is 2 RE. Please tell me if you could do it with a single RE:
import re n=int(input()) l=[input() for i in range(n)] for s in l: m1=re.fullmatch(r'[456]\d{3}((?P<sep>-?)\d{4})((?P=sep)\d{4}){2}', s) s2=s.replace('-', '') m2=re.search(r'(?P<digit>\d)(?P=digit){3}',s2) if m1 and not m2: print('Valid') else: print('Invalid')
+ 0 comments # Enter your code here. Read input from STDIN. Print output to STDOUT import re number_of_cards = int(input()) for _ in range(number_of_cards): card_number = input() if not re.match('[4-6][0-9]{3}-?[0-9]{4}-?[0-9]{4}-?[0-9]{4}$', card_number): print ('Invalid') continue card_number = card_number.replace('-','') if re.search(r'([0-9])\1{3}', card_number): print ('Invalid') continue print ('Valid')
+ 0 comments import re def validator(cc): if not re.fullmatch(r'[456](\d{3})(-?\d{4}){3}', cc): return False cc = cc.replace('-', '') if re.search(r'(\d)\1{3,}', cc): return False return True for i in range(int(input())): if validator(input()): print('Valid') else: print('Invalid')
+ 0 comments Python basics
for i in range(int(input())): card = input() p = c = 0 if (card.startswith('4') or card.startswith('5') or card.startswith('6')): if len(card) == 19: if card[-15] == '-' and card[-10] == '-' and card[-5] == '-': card = card.replace("-", "") card = card.replace("_", "") card = card.replace(" ", "") if card.isdigit(): for i in range(0,len(card)-1): if(card[i]==card[i+1]): c=c+1 if c>=3: p=1 break elif(card[i]!=card[i+1]): c=0 if p == 0: s = "Valid" else: s = "Invalid" else: s = "Invalid" else: s = "Invalid" elif len(card) == 16: if card.isdigit(): for i in range(0, len(card) - 1): if (card[i] == card[i + 1]): c = c + 1 if c >= 3: p = 1 break elif (card[i] != card[i + 1]): c = 0 if p == 0: s = "Valid" else: s = "Invalid" else: s = "Invalid" else: s = "Invalid" else: s = "Invalid" print(s)
+ 0 comments import re def is_valid_credit_card(number): # check if it starts with 4, 5 or 6 if not re.match(r'^[4-6]', number): return False # check if it contains exactly 16 digits if not re.match(r'^\d{16}$|^(\d{4}-){3}\d{4}$', number): return False # check if it only contains digits if not re.match(r'^\d+$', number.replace("-", "")): return False # check if it does not have 4 or more consecutive repeated digits if re.search(r'(\d)\1{3,}', number.replace("-", "")): return False return True n = int(input()) credit_cards = [] for i in range(n): credit_cards.append(input()) for i in range(n): if is_valid_credit_card(credit_cards[i]): print("Valid") else: print("Invalid")
Load more conversations
Sort 360 Discussions, By:
Please Login in order to post a comment