ביטוי רגולרי הוא רצף של תווים שיוצר תבנית חיפוש. ביטויים רגולריים משמשים בעיקר לחיפוש, אימות והפיכת טקסטים או מחרוזות.
למד כיצד לאמת מספרי כרטיסי אשראי כמו מאסטרקארד, ויזה קארד ואמריקן אקספרס באמצעות ביטויים רגילים.
מתי להשתמש ב-RegEx כדי לאמת מספר כרטיס אשראי?
שירותי הצד השלישי גובים עבור כל ניסיון עסקה. בין אם העסקה הצליחה ובין אם לא, עליך לשלם את החיובים. במקרים כאלה, אתה רוצה לדחות מספרי כרטיסי אשראי שאינם חוקיים בעליל. אתה יכול לאמת במהירות מספרי כרטיסי אשראי באמצעות ביטויים רגולריים.
אבל אינך יכול להסתמך לחלוטין על אימות ביטוי רגולרי עבור תכונת התשלום שלך. מנפיקי כרטיסים משנים באופן קבוע את דפוסי מספרי הכרטיסים שלהם (מציגים דפוסים חדשים או משיכת תבניות ישנות), כך ששיטת הרקס אינה הפתרון החזק ביותר. למרות שאתה יכול לנסות לשמור על דפוסי הכרטיסים ממקור כמו ויקיפדיה שמתעדכן לעתים קרובות.
אתה יכול גם להשתמש ב-Regex כדי למצוא במהירות את מותג הכרטיסים שבו תוכל להשתמש כדי להציג לוגו או תוויות.
לביטויים רגולריים יש כמה מקרי שימוש מעשיים. פקודת Linux grep הוא כנראה מקרה השימוש המעשי הנפוץ ביותר של הרקס.
הקוד המשמש בפרויקט זה זמין ב-a מאגר GitHub והוא בחינם עבורך לשימוש תחת רישיון MIT.
RegEx לאימות מספר מאסטרקארד
מספר מאסטרקארד תקף אם הוא עומד בתנאים הבאים:
- המחרוזת לא צריכה להכיל תווים מיוחדים, אלפביתים או רווחים לבנים.
- מספר התווים חייב להיות שווה ל-16.
- המחרוזת צריכה להתחיל בטווח מספרים בן 2 ספרות (הנע בין 51 ל-55) או בטווח מספרים בן 4 ספרות (הנע בין 2221 ל-2720).
- אם המחרוזת מתחילה בטווח מספרים בן 2 ספרות (הנע בין 51 ל-55), 14 הספרות הבאות חייבות להיות מספר בין 0 ל-9.
- אם המחרוזת מתחילה בטווח מספרים בן 4 ספרות (הנע בין 2221 ל-2720), 12 הספרות הבאות חייבות להיות מספר בין 0 ל-9.
הביטוי הרגולרי הבא עומד בתנאים שלעיל ויכול לאמת מספר מאסטרקארד:
^5[1-5][0-9]{14}|^(222[1-9]|22[3-9]\\d|2[3-6]\\d{2}|27[ 0-1]\\d|2720)[0-9]{12}$
אם אתה לא מרגיש בנוח עם הביטוי לעיל, בדוק מדריך למתחילים לביטויים רגולריים ראשון.
אתה יכול להשתמש בביטוי הרגולרי שלמעלה כדי לאמת את מספר מאסטרקארד בכל שפת תכנות. הנה איך לעשות זאת ב- Python:
יְבוּא מִחָדָשׁ
defcheckMasterCardNo(מספר הכרטיס):
regex = "^5[1-5][0-9]{14}|^(222[1-9]|22[3-9]\\d|2[3-6]\\d{2}|27[ 0-1]\\d|2720)[0-9]{12}$"
r = re.compile (רגקס)אם (מִחָדָשׁ.לחפש(ר, מספר הכרטיס)):
הדפס("תָקֵף")
אַחֵר:
הדפס("לא בתוקף")כרטיס1 = "5110762060017101"
checkMasterCardNo (כרטיס1)
כרטיס2 = "8632458236982734"
checkMasterCardNo (כרטיס2)
הפעלת קוד זה תאשר שהמספר הראשון תקף אך השני אינו:
RegEx לאימות מספר כרטיס ויזה
מספר כרטיס ויזה תקף אם הוא עומד בתנאים הבאים:
- המחרוזת לא צריכה להכיל תווים מיוחדים, אלפביתים או רווחים לבנים.
- המחרוזת צריכה להתחיל ב-4.
- מספר התווים חייב להיות שווה ל-13 או 16. לכרטיסי הויזה הישנים יש 13 תווים ולחדשים 16 תווים.
- אם מספר התווים שווה ל-13, 12 הספרות האחרונות חייבות להיות מספר בין 0 ל-9.
- אם מספר התווים שווה ל-16, 15 הספרות האחרונות חייבות להיות מספר בין 0 ל-9.
הביטוי הרגולרי הבא עומד בתנאים שלעיל ותוכל להשתמש בו כדי לאמת מספר כרטיס ויזה:
^4[0-9]{12}(?:[0-9]{3})?$
להלן גישת Python לאימות מספר כרטיס ויזה:
יְבוּא מִחָדָשׁ
defcheckVisaCardNo(מספר הכרטיס):
regex = "^4[0-9]{12}(?:[0-9]{3})?$"
r = re.compile (רגקס)אם (מִחָדָשׁ.לחפש(ר, מספר הכרטיס)):
הדפס("תָקֵף")
אַחֵר:
הדפס("לא בתוקף")כרטיס1 = "4539890694174109"
checkVisaCardNo (כרטיס1)
כרטיס2 = "49237429498"
checkVisaCardNo (כרטיס2)
שוב, הפלט מאשר שהמספר הראשון חוקי ואילו השני אינו חוקי:
RegEx לאימות מספר כרטיס אמריקן אקספרס
מספר כרטיס אמריקן אקספרס תקף אם הוא עומד בתנאים הבאים:
- המחרוזת לא צריכה להכיל תווים מיוחדים, אלפביתים או רווחים לבנים.
- מספר תווים זה חייב להיות שווה ל-15.
- המחרוזת צריכה להתחיל עם 34 או 37.
- 13 הספרות האחרונות חייבות להיות מספר בין 0 ל-9.
הביטוי הרגולרי הבא עומד בתנאים שלעיל ותוכל להשתמש בו כדי לאמת מספר כרטיס אמריקן אקספרס:
^3[47][0-9]{13}$
אתה יכול לאמת מספר כרטיס אמריקן אקספרס באמצעות קוד Python הבא:
יְבוּא מִחָדָשׁ
defcheckAmericanExpressCardNo(מספר הכרטיס):
regex = "^3[47][0-9]{13}$"
r = re.compile (רגקס)אם (מִחָדָשׁ.לחפש(ר, מספר הכרטיס)):
הדפס("תָקֵף")
אַחֵר:
הדפס("לא בתוקף")כרטיס1 = "372831730491196"
checkAmericanExpressCardNo (כרטיס1)
כרטיס2 = "84732593847743042"
checkAmericanExpressCardNo (כרטיס2)
פעם נוספת, הפלט מאשר שהמספר הראשון תקף, אבל השני לא חוקי:
יישומים של ביטויים רגולריים
אתה יכול להשתמש באיזה ביטוי רגולרי פשוט למדי כדי לאמת מספרי כרטיסי אשראי נפוצים. RegEx הוא כלי רב עוצמה שבו אתה יכול להשתמש עבור עיבוד מוקדם של נתונים, התאמת דפוסים, מיצוי נתונים, ניתוח מילוני, עיבוד שפה טבעית, גירוד אינטרנט ועוד. אתה יכול גם להשתמש בביטויים רגולריים בפיתוח אתרים כדי לטפל באימות של טפסי HTML.