
הטקסט המלא של הדקות הראשונות בהרצאה «RegEx in JavaScript» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
אנחנו הולכים להיכנס לאובייקט שקיים בג'אווה סקריפט שמאפשר לנו לבדוק מכרוזות בשיטה שנקראת רגולר אקספרשן. רגולר אקספרשן זה בעצם איזשהו מנוע שהוא לא תלוי באף שפת תכנות ואפשר לשלב אותו בכל מיני שפות תכנות, יש את זה בדוטנט, יש את זה בשפה שנקראת Perl, הרבה משתמשים איתו,
יש את זה בשפה שנקראת PHP, בג'אווה סקריפט ובעוד המון המון שפות אחרות. התפקיד של המנוע הזה זה לקחת איזשהו ביטוי שאנחנו מגדירים לו בשפה מיוחדת שנקראת regular expression ואז אם אנחנו נותנים לו מחרוזת אז הוא אומר לנו כל מיני דברים לגבי המחרוזת הזאת בהקשר לביטוי הזה. לדוגמה האם המחרוזת הזאת מכילה את הביטוי שאנחנו תיארנו בתוכה או איפה היא מכילה בדיוק או כמה פעמים היא מכילה את הביטוי הזה
או האם היא עומדת בביטוי או לא עומדת בביטוי וכך אנחנו יכולים לדעת האם פורמט מסוים של מכרוזת הוא תקין במכרוזת מסוימת שמתקבלת או שהוא לא תקין או כמה פעמים הפורמט הזה מופיע ועוד כל מיני דברים.
אז שווה מאוד ללמוד את השפה הזאת שנקראת regular expression בכדי לדעת איך אנחנו מבצעים בדיקות על מכרוזות עבור פורמטים מסוימים שאנחנו מחפשים.
לדוגמה אנחנו יכולים לדעת האם מכרוזת שלקוח מכניס לנו היא היא מהווה תקינות לגבי אימייל או לגבי טלפון או לגבי זיפ קוד מיקוד או אתר אינטרנט או כל דבר שאנחנו רוצים לדעת לגבי תקינות האם סיסמה היא באמת מינימום ארבעה תווים ומקסימום שמישה תווים או מינימום שמונה תווים או האם יוזרניים מכיל גם תו קטן וגם תו גדול וגם ספרה
ועוד כל מיני דברים כאלה בואו נראה בעצם איך אנחנו עובדים עם השפה הזאת אז בג'אווה סקריפט אנחנו יכולים לפתוח משתנה בואו נקרא לו רג אקס ונכניס לתוכו אובייקט מטיפוס רג אי אקס פי שזה קיצור של רגולר אקספרשן שזו בעצם השפה הזאתי.
והאובייקט הזה מקבל בסוגריים שלו את הביטוי שאנחנו רוצים להגדיר. הביטוי שאנחנו רוצים להגדיר בשפת רג אקס ניתן בין שני סלאשים יש פה סלאש שמתחיל סלאש שמסיים ואז הביטוי נמצא כאן.
בואו נניח שאני מכניס ביטוי את המחרוזת ABC. אז עכשיו אני הגדרתי בעצם איזשהו regular expression משתנה שאומר שהביטוי שהוא מחפש או רוצה לבדוק זה ABC. עכשיו אנחנו יכולים לקחת ולבדוק האם הביטוי הזה נמצא במחרוזות מסוימות.
בואו ניקח alert ונבדוק את רגקס, את המשתנה שלנו, ונקרא לפונקציה שנקראת טסט, ונבדוק האם מכרוזת שאנחנו נותנים שווה לביטוי הזה.
אנחנו הולכים לבדוק כל מיני דברים בשפת רגקס בשביל לדעת איך בעצם בונים את השפה ומה המרכיבים של שפת רגקס. אם אני סתם כותב תווים חסרי משמעות, זה אומר שאני מחפש בדיוק את התווים האלה בסדר הזה במכרוזת.
זאת אומרת שאם המכרוזת שלי באמת תהיה שווה ל-abc, אז תתבצע לי פה התאמה בין הביטוי של רגקס לבין המכרוזת. בואו נבדוק את זה.
אנחנו רואים שמוצגת לנו הודעה true. אוקיי, בואו ניתן עכשיו ביטוי אחר. בואו ניתן לדוגמה ביטוי tabc. נריץ, נקבל גם true.
בואו נראה למה קיבלנו true. אז למעשה מה שקרה זה שהמערכת קיבלה ביטוי abc בתור regular expression, ואומרת דבר כזה: בואו נחפש האם בכל המחרוזת שאנחנו נותנים קיימת המחרוזת abc.
בדיוק ככה. אם אני אגדיר a,b ובוא נגיד לדוגמה w,c אז לא קיימת לי המחרוזת a,b,c בשום מקום בתוך הביטוי שלי.
כלומר הביטוי a,b,c לא קיים בשום מקום כ-a,b,c בתוך המחרוזת. בואו נריץ את זה כעת וכמובן שאנחנו מקבלים false.
המחרוזת לא קיימת שם. אם יש לי a,b,c או יותר נכון t ואז a,b,c ואז w כעת המחרוזת a,b,c כן קיימת לי איפשהו ולכן קיבלנו true. עכשיו בואו נראה כל מיני דברים שקשורים ל-Fat Regular Expression שהגדרנו פה בכדי להתחיל ללמוד את השפה ואז לדעת איך להשוות כל מיני מכרוזות
או לבנות ביטויים בשביל למצוא מכרוזות או קיום של מכרוזות. אז ראשית, מה קורה אם אני בעצם רוצה שהמערכת גם תחפש אותיות קטנות וגם תחפש אותיות גדולות?
נניח שמתאים לי שהיא תמצא לי גם את ABC באותיות קטנות. כעת הביטוי אומר לי אני מחפש ABC באותיות גדולות.
בואו נבדוק מה הוא אומר עכשיו. אם אנחנו מריצים את זה אנחנו רואים שהוא לא מוצא את הביטוי מפני שבי דיפולט הוא לא קייס סנסיטיב. בשביל שהוא יהיה קייס סנסיטיב אני יכול אחרי כל הביטוי הזה להגדיר לו I. I מציין קייס אינסנסיטיב כלומר הוא לא רגיש לאותיות קטנות ולאותיות גדולות.
בואו נבדוק כרגע ואנחנו רואים שעכשיו הוא גם הצליח למצוא את הביטוי. הדבר הבא שאנחנו רוצים לראות ואני רוצה שהוא ימצא לי את הביטוי רק אם הביטוי שווה בדיוק ל-ABC.
זאת אומרת שהוא לא מתחיל בכל מיני דברים ומסתיים בכל מיני דברים, אלא בדיוק שווה לביטוי שהגדרתי לו ברגולר אקספרשן.
בשביל להגדיר את הדבר הזה אני צריך להגיד שהוא יתחיל לחפש את ABC ישר מההתחלה, וזה תו שנקרא קראט, שיפט 6 במקלדת, וזה אומר תתחיל לחפש את הביטוי מההתחלה.
ובשביל להגיד לו תסיים לחפש את הביטוי בדיוק בסוף, אז אחרי הביטוי אני מגדיר דולר. דולר מציין ברגולר אקספרשן התו האחרון לגמרי שנמצא במחרוזת.
כעת הוא אמור להחזיר false מפני שאין שום מחרוזת שנקראת ABC באותיות קטנות או באותיות גדולות שמתחילה מההתחלה ומסתיימת בדיוק בסוף, מפני שהמחרוזת שלי מתחילה בכלל ב-T ומסתיימת ב-W.
בואו נבדוק כרגע. נראה הפרש, נראה שהוא אומר לי false. אבל אם המחרוזת תהיה שווה בול ל-ABC, זה מתאים לביטוי ברגולר אקספרשן כי זה אומר שהתחלנו בדיוק מהתו הראשון לחפש ABC וסיימנו בדיוק בתו האחרון.
בואו נבדוק ונראה שהוא אומר לי true, הוא מצא את הביטוי. בואו נחזור ונעבור לדבר הבא. אז ישנה טבלה מאוד מפורטת שמראה כל מיני דברים ששייכים לעולם הרגולר אקספרשן או כל מיני ביטויים קטנים שמרכיבים את הביטוי הכללי ברגולר אקספרשן.
בואו נפתח אותה ונתחיל לראות אחד אחד מהדברים שקיימים בשפה הזאת. נתחיל עם הסימן נקודה. נקודה מציינת any single character. זאת אומרת שיש לנו פה בעצם כמו שמירת מקום לכל תו שהוא אחד ויחיד.
אוקיי, זאת אומרת שאם אנחנו מגדירים ביטוי ברגע שנקרא do נקודה אז הוא יתאים ל-dog או ל-dot או ל-doe וכולי. אם נגדיר d.r אז הוא יתאים לכל דבר שהוא יכול להיות תו בודד d-o-o-r d-e-e-r כמובן ויכול להיות גם תווים שהם לא אותו דבר.
בואו נבדוק את זה. נגדיר ברגולר אקספרשן a-b-c.d-e-f זאת אומרת שאנחנו מחפשים ביטוי שמתחיל ב-a-b-c בגלל שיש לנו i כאן זה אומר שהוא לא חייב להיות תואם מבחינת אותיות קטנות ואותיות גדולות.
כאן ישנן שמירה לשני תווים, בואו נגיד שהתו הבא שלנו זה U גדולה והתו 6. ולאחר מכן DEF כי תווים שעומדים כמו שהם זה אומר שאנחנו מחפשים בדיוק את התווים האלה. כעת המערכת אמורה לתת לי true לגבי ההתאמה כי זה בדיוק מתאים.