# בודק ביטויים רגולריים (Regex)

URL: https://shahid09.is-a.dev/he/tools/regex-tester/
Author: Muhammad Shahid (https://shahid09.is-a.dev/)
כלי חינמי · רץ בדפדפן שלכם

בדקו ביטוי רגולרי מול הטקסט שלכם וראו כל התאמה, את המיקום שלה ואת הקבוצות שנלכדו, עם החלפה לפי הצורך.

**תשובה קצרה:** הקלידו ביטוי רגולרי, בחרו דגלים והדביקו טקסט. הבודק מציג כל התאמה עם המיקום שלה והקבוצות שנלכדו, ואת תוצאת ההחלפה, שבה $1 הוא קבוצה 1. הוא משתמש במנוע ה־JavaScript של הדפדפן, כך שמה שעובד כאן עובד ב־JavaScript וב־TypeScript; רוב התבניות הפשוטות עובדות גם ב־Python,‏ Java ו־PHP.

## איך משתמשים

1. **הקלידו את התבנית.** בלי הלוכסנים מסביב, למשל \d{3}-\d{4}.
2. **בחרו דגלים והדביקו טקסט.** g מוצא את כל ההתאמות, i מתעלם מרישיות, m גורם ל־^ ול־$ להתאים לכל שורה.
3. **קראו את ההתאמות.** לכל התאמה מוצגים מיקום וקבוצות; הוסיפו החלפה כדי לראות את הטקסט המעודכן.

## דוגמה

מציאת כתובות אימייל ולכידת השם והדומיין:

קלט:

```
Pattern: (\w+)@(\w+)\.com   Flags: g
Text:    mail sara@example.com or ali@test.com
```

פלט:

```
2 התאמות
1. sara@example.com  @5   $1=sara  $2=example
2. ali@test.com      @25  $1=ali   $2=test
```

## שגיאות נפוצות ואיך לתקן אותן

- **Invalid regular expression: Unterminated group**: ל־( אין ) תואם. ספרו את הסוגריים, או הוסיפו לוכסן הפוך לסוגר שאתם רוצים כפשוטו: ‎\(‎.
- **Invalid regular expression: Nothing to repeat**: לכמת כמו *,‏ + או ? אין משהו לפניו, כמו ב־‎*abc‎. כתבו ‎\*‎ כדי להתאים לתו עצמו.
- **נמצאת רק ההתאמה הראשונה**: הדגל g כבוי. סמנו g כדי למצוא את כל ההתאמות.
- **הדף נתקע**: כמתים מקוננים כמו ‎(a+)+$‎ גורמים ל־catastrophic backtracking על טקסט שכמעט מתאים. הסירו את הקינון או הפכו את התבנית לספציפית יותר.

## שאלות נפוצות

### מה המשמעות של הדגלים g,‏ i,‏ m,‏ s ו־u?

g מוצא את כל ההתאמות ולא רק הראשונה; i מתעלם מרישיות; m גורם ל־^ ול־$ להתאים בתחילת ובסוף כל שורה; s מאפשר ל־. להתאים לשבירת שורה; u מפעיל התאמת Unicode מלאה.

### למה הביטוי מוצא רק התאמה אחת?

בלי הדגל g,‏ JavaScript עוצר אחרי ההתאמה הראשונה. סמנו g.

### איך מתאימים כתובת אימייל?

תבנית מעשית היא ‎[\w.+-]+@[\w-]+\.[\w.]+‎. אימות מלא של כל אימייל אפשרי ב־regex לא מעשי; עדיף לשלוח מייל אימות.

### איך משתמשים בקבוצה בהחלפה?

עטפו חלק מהתבנית בסוגריים והשתמשו ב־$1,‏ $2 וכן הלאה בהחלפה. בקבוצות עם שם (?<year>\d{4}) משתמשים ב־$<year>.

### איך מתאימים נקודה או סוגר כפשוטם?

הוסיפו לפניהם לוכסן הפוך: ‎\.‎ מתאים לנקודה, ‎\(‎ לסוגר. בלי הלוכסן, . מתאים לכל תו.

### מה ההבדל בין ‎.*‎ ל־‎.*?‎?

‎.*‎ חמדן ומתאים כמה שיותר; ‎.*?‎ עצלן ומתאים כמה שפחות. השתמשו בגרסה העצלנית כדי לעצור בתגית הסוגרת או במירכאה הראשונה.

### מה זה lookahead?

בדיקה שלא צורכת טקסט: ‎\d+(?= USD)‎ מתאים למספר רק אם אחריו " USD". ‎(?! )‎ היא הגרסה השלילית.

### זה עובד גם ל־regex של Python?

ברובו. התחביר הבסיסי זהה; ההבדלים כוללים קבוצות עם שם, שנכתבות (?P<name>) בגרסאות ישנות של Python, וחלק מהדגלים.

### למה הדף נתקע עם תבניות מסוימות?

כמתים מקוננים כמו ‎(a+)+‎ יכולים לקחת זמן מעריכי על טקסט שכמעט מתאים. זה נקרא catastrophic backtracking; פשטו את התבנית.

### הטקסט שלי מועלה?

לא. הביטוי רץ בדפדפן שלכם.

## קשור

- [ממיר אותיות גדולות וקטנות](https://shahid09.is-a.dev/he/tools/case-converter/)
- [עיצוב ובדיקת JSON](https://shahid09.is-a.dev/he/tools/json-formatter/)
- [קידוד ופענוח URL](https://shahid09.is-a.dev/he/tools/url-encoder-decoder/)
