זיהוי הצורה הבסיסית של כתובת email
^[\w.+-]+@[\w-]+\.[\w.-]+$learner@coddy.tech
התבנית תופסת את הצורה הבסיסית something@something.something. אימות email בעולם האמיתי מתירני הרבה יותר מזה: בטפסים עדיף להשתמש ב-type="email" ובבדיקה בצד השרת.
לבדוק ביטויים רגולריים עם הדגשת התאמות מונפשת.
עודכן לאחרונה
ב-Coddy לומדים דרך כתיבת קוד אמיתי בדפדפן: שיעורים אינטראקטיביים, משוב מיידי ועזרה מ-AI כשנתקעים.
Regex tester מאפשר לכתוב ביטוי רגולרי ולראות מיד למה הוא מתאים בטקסט לדוגמה. מפתחים משתמשים ב-regex (ביטויים רגולריים) כדי לאמת קלט, לחלץ נתונים ממחרוזות, לחפש בלוגים, לנקות טקסט, לבנות פקודות בעורך ולכתוב כללי חיפוש והחלפה.
בהתחלה regex נראה כמו כתב סתרים, כי כמה סימנים בודדים נושאים הרבה משמעות. בודק חי מסיר את המסתורין: כל תו שאתם מקלידים מעדכן את ההתאמות המודגשות ואת קבוצות הלכידה, כך שאפשר להתנסות עד שהתבנית עושה בדיוק את מה שצריך.
שפות תכנות שונות משתמשות במנועי regex שונים מעט זה מזה (JavaScript, PCRE, Python, Java, Go, .NET). היסודות, כלומר תווים, מחלקות תווים, כמתים, עוגנים וקבוצות, עובדים בכל מקום. היכולות המתקדמות (lookbehind, קבוצות עם שם, כמתים פוססיביים) הן המקום שבו המנועים נפרדים.
\d+ מתאים לרצף ספרות, אבל לא יודע אם המספר הגיוני.g מוצא את כל ההתאמות, i מתעלם מאותיות גדולות וקטנות, m גורם ל-^ ול-$ להתאים לתחילת שורה ולסופה, ו-s מאפשר ל-. להתאים גם לירידת שורה.(...) מחלצות חלקים מהתאמה, ולא רק בודקות אם כל המחרוזת מתאימה. הן חיוניות לפענוח (parsing).? הופכת אותם ל*עצלים* (lazy): הם מתאימים כמה שפחות.הזינו ביטוי רגולרי בשדה התבנית. אל תכללו את הלוכסנים / שמסביב: הם תחביר ליטרל של JavaScript, לא חלק מהתבנית עצמה.
ברוב המקרים תרצו g (מציאת כל ההתאמות) ו-i (בלי הבחנה בין אותיות גדולות לקטנות). השתמשו ב-m לעוגנים לפי שורה וב-s כדי ש-. יתאים גם לירידת שורה.
שימו טקסט לדוגמה באזור הבדיקה. ההתאמות מודגשות תוך כדי הקלדה, וקבוצות הלכידה מופיעות מתחת לרשימת ההתאמות.
כל התאמה מציגה את המיקום שלה, את הטקסט המלא ואת הקבוצות שנלכדו. השתמשו בזה כדי לוודא שהתבנית תופסת את מה שאתם רוצים ומדלגת על מה שלא.
הדקו כמתים, הוסיפו עוגנים (^, $) או בצעו escape לתווים ליטרליים (\., \?) עד שההתאמות והקבוצות הן בדיוק מה שהקוד שלכם צריך.
ה-80% של regex שתשתמשו בהם 99% מהזמן. שמרו את הדף במועדפים: זו הדרך המהירה ביותר לזכור את התחביר. לדקדוק המלא, עיינו במדריך הביטויים הרגולריים של MDN.
| סימן | משמעות | דוגמה |
|---|---|---|
. | כל תו בודד (חוץ מירידת שורה) | a.c מתאים ל-abc, a-c |
\d \D | ספרה / לא ספרה | \d+ מתאים ל-123 |
\w \W | תו מילה (אות/ספרה/_) / לא תו מילה | \w+ מתאים ל-hello_1 |
\s \S | רווח לבן / לא רווח לבן | \s+ מתאים לרווחים ולטאבים |
[abc] | אחד מ-a, b או c | [aeiou] מתאים לתנועה |
[^abc] | אף אחד מ-a, b או c | [^0-9] מתאים לתווים שאינם ספרות |
* + ? | 0 או יותר, 1 או יותר, 0 או 1 מהקודם | a+ מתאים ל-a, aaa |
{n} {n,m} | בדיוק n / בין n ל-m | \d{3,5} בין 3 ל-5 ספרות |
^ $ | תחילת / סוף מחרוזת (או שורה עם m) | ^Error שורה שמתחילה ב-Error |
(...) | קבוצת לכידה | (\d+) לוכד את הספרות |
(?:...) | קבוצה ללא לכידה | (?:foo|bar) קיבוץ בלי לכידה |
a|b | חלופה: a או b | yes|no |
\b | גבול מילה | \bcat\b מתאים ל-cat ולא ל-cats |
^[\w.+-]+@[\w-]+\.[\w.-]+$learner@coddy.tech
התבנית תופסת את הצורה הבסיסית something@something.something. אימות email בעולם האמיתי מתירני הרבה יותר מזה: בטפסים עדיף להשתמש ב-type="email" ובבדיקה בצד השרת.
\d+Lesson 12 has 3 tasks and 2 quizzes.
עם ה-flag g, התבנית מוצאת כל רצף ספרות: 12, 3, 2. \d+ הוא המקבילה ב-regex ל"ספרה אחת או יותר".
/users/(\d+)/users/42/profile
ההתאמה המלאה היא /users/42, וקבוצת הלכידה (\d+) מחלצת רק את 42. קבוצות לכידה הן הדרך *להשתמש* בפועל בהתאמת regex בתוך הקוד.
<.+><.+?><b>hello</b>
הגרסה החמדנית מתאימה לכל המחרוזת <b>hello</b>, כי .+ תופס כמה שיותר. הגרסה העצלה (+?) עוצרת ב-> הראשון, ולכן מתאימה רק ל-<b> ול-</b>.
., ?, +, (, ), [, ], {, }, \, ^, $, |. כשרוצים אותם כפשוטם, מוסיפים לפניהם \..* חמדן ומתאימים הרבה יותר ממה שהתכוונו. עברו ל-.*? או למחלקת תווים ספציפית יותר.g ותוהים למה רק ההתאמה הראשונה מודגשת.\d, \w, [abc]) ובכמתים (*, +, ?, {n,m}). השתמשו ב-regex tester כדי לשפר שוב ושוב עד שהתבנית מתאימה בדיוק למקרים שאתם רוצים.\w ב-regex?\w מתאים לתו מילה: אות, ספרה או קו תחתון. \W הוא ההפך (כל תו שאינו תו מילה). הקבוצה המדויקת תלויה במנוע וב-flag של Unicode..* מתאים לכמה שיותר. עברו לכמת עצל (.*?) או השתמשו במחלקת תווים ספציפית יותר כדי לעצור איפה שאתם רוצים.re של Python, Java, Go ו-.NET תומכים כל אחד ב-flags וביכולות מתקדמות קצת שונות (תמיכה ב-lookbehind, קבוצות עם שם, כמתים פוססיביים).