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

החלפה בסיסית ו-`$1`

ב-JavaScript, String.prototype.replace(regex, replacement) מבצע א התאמה לתבנית ומחליף כל התאמה במחרוזת הנתונה. עם g סמן אותו מחליף את כל ההתאמות; בלעדיו, רק הראשון. replaceAll כופה את ההתנהגות הגלובלית (ודורש את הדגל g על הביטוי הרגולרי).

JS
'ciao mondo'.replace(/o/g, '0'); // "cia0 m0nd0"
'Mario Rossi'.replace(/(\w+) (\w+)/, '$2 $1'); // "Rossi Mario"

הפניות במחרוזת ההחלפה

בתוך מחרוזת ההחלפה, אלה מיוחדים:

  • $1, $2, \u2026 -- הפניה לאחור ל-הקבוצה הממוספרת של הביטוי הרגולרי.
  • $<name> -- הפניה לאחור ל-הקבוצה בעלת השם.
  • $& -- המשחק כולו.
  • `$`` -- text before the match.
  • $' -- text after the match.
  • $$ -- a single literal $.
JS
const data = '2024-03-15';
data.replace(/(\d{4})-(\d{2})-(\d{2})/, '$3/$2/$1');
// "15/03/2024"

עצב מחדש את התאריך על ידי היפוך הסדר. ל-Regex יש 3 קבוצות, וב- מחרוזת החלפה אתה מפנה אליהם בתור $1, $2, $3.

התייחסויות מיוחדות בהחלפות

מלבד $1 ו-$2, אתה יכול להשתמש ב-$& כדי להוסיף את כל הטקסט המותאם, $ for all text preceding the match, and$'` עבור כל הטקסט שאחריו. זה מאפשר תחליפים עשירים גם בלי לכתוב קוד JS.

נסה את זה

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

מצא כל תאריך בפורמט YYYY-MM-DD עם שלוש קבוצות (שנה, חודש, יום). בדרך זו תוכל להשתמש ב- replace כדי להשיג DD/MM/YYYY.

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

החלף את \\d+ ב-\\d{4}, \\d{2}, \\d{2} בתוך שלוש קבוצות שנלכדו ב-(...).

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

סקירת התרגיל

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

מצא את 'ראשון אחרון' בתור שתי קבוצות בשם 'נום' ו'קונום', כך שתוכל לכתוב אותו מחדש בתור 'קוגנום, נום' באמצעות '$<cognome>, $<nome>`.

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

השתמש ב-(?<nome>\\w+) ו-(?<cognome>\\w+) מופרדים ב-\\s+.

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

אתגר נוסף

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

Create a capture pattern to reverse the order of first and last name from `Lastname, Firstname` format to `Firstname Lastname`.

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

Use two capture groups for last and first name; the replacement will be performed via $2 $1.

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