דילוג לתוכן המרכזי
מודול 7 · שיעור 1 מתוך 425/32 בקורס~12 min
שיעורי מודול (1/4)

כל הדגלים בפירוט

תקציר מלא של כל הדגלים הזמינים ב-JavaScript המודרני (ES2024). דגל הוא תו יחיד שמשנה את ההתנהגות של regex; ניתן לשלב אותם בכל סדר.

דגלשםאפקט
gגלובלימוצא את כל ההתאמות, לא רק את הראשונה (נדרש עבור matchAll).
iהתעלם מכתבלא תלוי רישיות (כולל תווי Unicode עם הדגל u/v).
mMultiline^ ו-$ תואמים את ההתחלה/סוף של שורה, לא רק למחרוזת.
sנקדו הכלה-. תואם גם את השורה החדשה \n.
uUnicodeטיפול נכון בנקודות קוד > 0xFFFF ומאפשר \\p{...}.
vUnicode v-modeהרחבה מודרנית של u עם פעולות מוגדרות ([abc&&[def]]).
yדביקמתאים רק מעמדה lastIndex, ללא דילוגים.
dיש מדדיםהתוצאה כוללת indices עם התחלה/סוף של כל קבוצה.
JS
const re = /foo/gimu; // global + insensitive + multiline + unicode
re.flags; // "gimu" (always in canonical order: dgimsuvy)

שילובים אופייניים

  • g + i -- "מצא הכל, לא תלוי רישיות". 80% מהשימושים המעשיים.
  • g + m -- כדי להתאים שורה אחר שורה בטקסט מרובה שורות.
  • g + s -- "הנקודה מתאימה לכל דבר, כולל שורות חדשות". שימושי לחילוץ בלוקים על פני מספר קווים.
  • u (או v) -- תמיד אם אתה מתמודד עם טקסט מהעולם האמיתי בכל שפה או אימוג'י.

Unicode v-mode והתפתחות דגל

הדגל v (זמין ב-ES2024) מחליף את u ומאפשר פעולות מתקדמות על סטים, כגון חיתוך וחיסור של מחלקות תווים (למשל [\\p{White_Space}&&\\p{ASCII}]).

נסה את זה

פעילות גופנית#regex.m7.l1.e1
ניסיונות: 0טוען...

מצא את כל המופעים של 'ciao' ללא קשר למקרה. השתמש בדגל הנכון.

טוען עורך...
הצג רמז

הוסף את דגל ה-i (לא תלוי רישיות) ליד g.

הפתרון זמין לאחר 3 ניסיונות

סקירת התרגיל

פעילות גופנית#regex.m7.l1.e2
ניסיונות: 0טוען...

מצא בלוק בין `<pre>` ו`</pre>` גם אם הוא מכיל שורות חדשות. עליך להשתמש בדגל שגורם לנקודה להתאים גם לשורות חדשות.

טוען עורך...
הצג רמז

הוסף את דגל s כך . מתאים גם לשורות חדשות, והשתמש ב-lazy .+? לעצור ב</pre> הראשון.

הפתרון זמין לאחר 3 ניסיונות

אתגר נוסף

פעילות גופנית#regex.m7.l1.e3
ניסיונות: 0טוען...

Match sequences of ASCII characters, explicitly excluding digits, using Unicode v-mode properties (flag `v`) and set subtraction syntax `[\p{ASCII}--\p{Nd}]+`.

טוען עורך...
הצג רמז

השתמש בדגל v וכתוב את החיסור המוגדר [\\p{ASCII}--\\p{Nd}]+ כדי לא לכלול מספרים.

הפתרון זמין לאחר 3 ניסיונות