Regular Expressions (ביטויים רגולריים) ב JS | מדריך
-
ביטויים רגולרים ב - JS
המדריך דלהלן נכתב לחבר'ה טיפה מתקדמים, אבל אל דאגה, בהמשך יבואו מדריכים פשוטים יותר.
אז מהו ביטוי רגולרי?
ביטוי רגולרי – הוא רצף של תווים שיוצר דפוס לחיפוש במחרוזות.
ביטוי רגולרי הינו כלי רב עוצמה לטיפול במחרוזות טקסט.הגדרת ביטוי רגולרי יכולה להתבצע בשתי צורות:
- כתיבת הביטוי בין שני סלשים (קו נטוי)
- שימוש בפונקציה בנאית –
new RegExp(regularExpression, modifiers)
.
אנחנו נשתמש באופציה הראשונה והפשוטה.
לכל ביטוי רגולרי קיימות כמה מתודות חשובות. נתחיל מהביטוי הפשוט, 'mitmachim'. קודם כל נגדיר את המשתנה שיכיל את הביטוי, נקרא לו לצורך העניין site.
let site = /mitmachim/;
אם נרצה לבדוק אם קיימת התאמה בין הביטוי הזה לסטרינג כלשהו, נשתמש במתודה
test
כך:let site = /mitmachim/; let text = 'mitmachim'; let isCompatible = site.test(text);
כמו שאתם רואים, השתמשתי במתודה test השמורה לביטויים רגולרים, בכדי לבדוק התאמה לסטרינג המאוחסן במשתנה text.
בטח תשאלו, מה הרווחנו? הרי אותו דבר יכולנו לבדוק באמצעות השוואת מחרוזת רגילה! רגע, לא כזה מהר.
שימו לב לדוגמה הבאה:
let site = /mitmachim/i; let text = 'mitmachim'; let isCompatible = site.test(text);
אל תפספסו את האות i שהוספתי לביטוי הרגולרי לאחר הסלש. מה הרווחתי מזה? נניח שבטקסט היה כתוב 'Mitmachim', אם היינו משווים את זה לטקסט רגיל היינו בצרות צרורות, כי במקרה כזה ההשוואה הייתה נפסלת מהסיבה ש 'mitmachim' !== 'Mitmachim'. אז מה בכל זאת מה עושים? ביטוי רגולרי בתוספת של האות i שקובע שאין להתייחס להבדלים בגודל האותיות, והכול מסודר! שימו לב כמה שזה עושה לנו חיים קלים, אחרת היינו צריכים להתחיל לחשוב על לוגיקה הרבה יותר מורכבת..
נ.ב. השימוש באות i מכונה
modifiers
. ישנם עוד שתי אותיות כאלו:-
g – מוצא את כל ההתאמות (במקום לבדוק אחת בלבד)
-
m – הביטוי הרגולרי יתחשב בריבוי שורות.
בכל אופן, נחזור לענייננו. במידה ונרצה להשוות את תחילת הטקסט לביטוי הרגולרי, נשתמש בסימן '^' כך:
let site = /^mitmachim/; let text = 'mitmachim'; let isCompatible = site.test(text);
מה שיקרה הוא, שרק אם הטקסט מתחיל באותיות 'mitmahim' הבדיקה תאושר.
ניתן לבדוק גם את התווים בסוף המחרוזת על ידי הסימן '$' כך:
let site = /mitmachim$/; let text = 'mitmachim'; let isCompatible = site.test(text);
במקרה הזה, כל סטרינג המסתיים באותיות 'mitmachim' יאושר.
אל תשכחו שניתן כמובן להשתמש במתודות הרגילות לחיפושים בטקסט בכדי להתאים אותם עם ביטוי רגולרי, לדוגמה:
let site = /mitmachim/; let text = 'mitmachim'; let isCompatible = text.search(site);
אם נרצה להחזיר התאמה גם אם ישנם הרבה תווים שלא קשורים באמצע הסטרינג, נשתמש בביטוי רגולרי המכיל תווים חופשיים כך:
let site = /mitma.chim/; let text = 'mitma1chim'; let isCompatible = site.test(text);
הנקודה שבביטוי הרגולרי מציינת תו חופשי בודד. כמובן שהביטוי שלעיל יחזיר true.
אם נרצה לכמת (מלשון כמות) תווים, נשתמש באחד מהתווים הבאים:
- '+' - מציין אחד או יותר מהתו המופיע לפניו
- '*' - מציין אפס או יותר מהתו המופיע לפניו
- '?' – מציין אפס או תו בודד מהתו המופיע לפניו.
ניתן להגדיר בביטוי הרגולרי טווח של תווים, באמצעות סוגריים מרובעים:
- [0-9] – ספרות בלבד
- [a-z] – אותיות קטנות בלבד
- [A-Z] – אותיות גדולות בלבד.
כמובן שניתן להקטין את הטווח. לדוגמה: [0-5] משמעותו היא, ספרות מאפס ועד הספרה חמש בלבד, וכן הלאה.
טוב. הנושא הזה הוא מידי ארוך, אולי נחזור אליו בהמשך. בהצלחה!
-
@מוטי-אורן אמר בRegular Expressions (ביטויים רגולריים) ב JS | מדריך:
let
תותח,פשוט תותח
מה זה let רק?(הרבה זמן לא נגעתי ב-JS....
)
-
@itapi אמר בRegular Expressions (ביטויים רגולריים) ב JS | מדריך:
תותח,פשוט תותח
תודה רבה!
מה זה let רק
let זוהי מילה שמורה שמשמשת להגדרת משתנים (אתה בטח מכיר את var הישנה), היום מעדיפים להשתמש בזה, בגלל כמה סיבות.
-
@מוטי-אורן אמר בRegular Expressions (ביטויים רגולריים) ב JS | מדריך:
@itapi אמר בRegular Expressions (ביטויים רגולריים) ב JS | מדריך:
תותח,פשוט תותח
תודה רבה!
מה זה let רק
let זוהי מילה שמורה שמשמשת להגדרת משתנים (אתה בטח מכיר את var הישנה), היום מעדיפים להשתמש בזה, בגלל כמה סיבות.
נ.ב. אתה יכול לראות על זה בקישור בבלוג של chv
אוה כן
varיפה...ממש יפה....
-
@מוטי-אורן ומה אם אני ירצה לשלב גם את ה
@מוטי-אורן אמר בRegular Expressions (ביטויים רגולריים) ב JS | מדריך:
modifiers
של M
ושל G כיצד עושים את זה ו...... תודה ענקית על המדריכים הכל כך ברורים האלה פשוט תענוג..... -
@יהושע-זופניק כמו ה - i, ואתה יכול להוסיף אפילו את שלושתם מצרף דוגמה:
let site = /mitmachim/igm; let text = 'mitmachim'; let isCompatible = site.test(text);
תודה ענקית על המדריכים
בשמחה רבה, שמח לשמוע שנהנים מזה.
-
מ מוטי אורן התייחס לנושא זה ב
-
מ מוטי אורן התייחס לנושא זה ב
-
א אלישי העביר נושא זה מ-JavaScript ES6 ב-
-
מ מגדלים העביר נושא זה מ-עזרה הדדית - JavaScript ב-
-
ש שלום עולם התייחס לנושא זה ב