MS

כלי חינמי · רץ בדפדפן שלכם

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

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

דגלים

משתמש במנוע הביטויים הרגולריים של JavaScript בדפדפן. מוצגות עד 100 התאמות.

תשובה קצרה

הקלידו ביטוי רגולרי, בחרו דגלים והדביקו טקסט. הבודק מציג כל התאמה עם המיקום שלה והקבוצות שנלכדו, ואת תוצאת ההחלפה, שבה $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; פשטו את התבנית.

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

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

קשור