में क्रेडिट कार्ड भविष्यवाणी मैं एक उपकरण लिख रहा हूं कि ऑनकीडाउन इनपुट बॉक्स में दर्ज होने वाले वर्तमान मूल्य को चलाएगा ताकि यह देखने के लिए कि यह 4 प्रमुख प्रकार के क्रेडिट कार्डों में से किसी एक के लिए रेगेक्स से मेल खाता है या नहीं।जावास्क्रिप्ट
मुझे ऐसा लगता है कि यह काम करता है, लेकिन यह बेहोश है इसलिए मैं यह जानना चाहता था कि यह दोषपूर्ण प्रतिक्रिया देने के कारण क्या था (उदाहरण के लिए कभी-कभी यह एक के बजाय 2 मान आउटपुट करेगा)। ऐसा इसलिए है क्योंकि मुझे लूपिंग से पहले ध्वज चर सेट करने की आवश्यकता है? सही कार्ड के मैच पर, मैंने अभी-अभी वस्तु के माध्यम से लूप से लौट रही है, इसलिए मैंने सोचा कि पर्याप्त होगा ...
regexes के लिए मापदंड this site से खींचा गया:
वीज़ा:
^4[0-9]{12}(?:[0-9]{3})?$
सभी वीजा कार्ड नंबर 4 से शुरू होते हैं। नए कार्ड में 16 अंक होते हैं।^5[1-5][0-9]{14}$
सभी मास्टर कार्ड संबंधी आंकड़े के साथ शुरू 51 55 सभी के माध्यम से 16 अंक है: पुराने कार्ड 13.मास्टरकार्ड है।
अमेरिकन एक्सप्रेस:
^3[47][0-9]{13}$
अमेरिकन एक्सप्रेस कार्ड नंबर 34 या 37 के साथ शुरू और 15 अंक है।डिस्कवर:
^6(?:011|5[0-9]{2})[0-9]{12}$
डिस्कवर कार्ड नंबर 6011 या 65 के साथ शुरू होते हैं। सभी में 16 अंक हैं।$(function() { var $cardNumber = $('#js-cardnumber'); var ccMap = {}; ccMap.cards = { 'amex': '^3[47][0-9]{13}$', 'discover': '^6(?:011|5[0-9]{2})[0-9]{12}$', 'mastercard': '^5[1-5][0-9]{14}$', 'visa': '^4[0-9]{12}(?:[0-9]{3})?$' }; $cardNumber.keydown(function() { for (var cardType in ccMap.cards) { if (ccMap.cards.hasOwnProperty(cardType)) { var regex = ccMap.cards[cardType]; if (regex.match($(this).val())) { console.log(cardType); return; } } } }); });
आप कुछ गलत कर रहे हैं कहीं और। कंसोल पर लॉग इन करने के बाद आप लूप को प्रक्रिया/समाप्त कर रहे हैं, इसलिए दो लॉग लाइनों को आउटपुट करने का कोई मौका नहीं है। – SJuan76
इसे देखें http://en.wikipedia.org/wiki/Luhn। और फिर यह कार्यान्वयन जेएस https://github.com/jzaefferer/jquery-validation/blob/master/jquery.validate.js#L1129 – elclanrs
पहिया को पुन: पेश नहीं करता है;) – jantimon