Regex בוחן
בדוק וניפוי באגים בביטויים רגולריים באופן מיידי בדפדפן שלך. הדגש התאמות, הצג קבוצות לכידה והשתמש במצב החלפה - חינמי ופרטי.
בדוק וניפוי באגים בביטויים רגולריים באופן מיידי בדפדפן שלך. הדגש התאמות, הצג קבוצות לכידה והשתמש במצב החלפה - חינמי ופרטי.
ביטויים רגולריים הם שפה ספציפית לתחום להתאמת תבניות בטקסט. הם היו חלק מהמחשוב מאז 1968 והם מובנים כעת בכל שפת תכנות מודרנית, עורך טקסט וכלי חיפוש בשורת הפקודה. התחביר הוא תמציתי אך מועד לשגיאות: שינויים קטנים מייצרים התנהגות התאמה שונה בתכלית, וביטויים מורכבים הופכים לבלתי קריאים במהירות. בודק שמראה התאמות בזמן אמת בזמן עריכת הדפוס הוא הדרך היעילה ביותר לפיתוח ולאמת ביטוי רגיל.
בודק זה פועל בדפדפן שלך באמצעות מנוע JavaScript regex (אותו אחד שהאפליקציה שלך משתמשת בו אם הוא פועל בדפדפן). דפוסים וטקסט בדיקה מתעדכנים באופן תגובתי: כל שינוי באחד מהם מפעיל מחדש את ההתאמה. קבוצות התאמה מודגשות, קבוצות שנלכדו מופיעות ברשימה ודגלים (לא תלויי רישיות, ריבוי שורות, גלובליות) נחשפים לבדיקה.
תחביר Regex משתנה בעדינות בין המנועים. JavaScript עוקב אחר מפרט ECMAScript; ל-Python, PCRE (בשימוש PHP ורבים אחרים), Java ו-Go לכל אחד יש דיאלקטים משלהם עם תכונות חופפות אך לא זהות. דפוסים שפותחו כאן משתמשים בתחביר ECMAScript; ניידות חוצת מנועים מחייבת בדיקת תיעוד של כל מטרה.
ידוע לשמצה שקשה לנפות באגים Regex לאחר הפריסה. דפוס שנראה סביר עשוי להתאים יותר או פחות מהמתוכנן, להיכשל במקרים של קצה, או להיות בעל מסלול קטסטרופלי לאחור בכניסות מסוימות. בדיקת דפוסים באופן אינטראקטיבי מול קלט מייצג תופסת בעיות לפני סקירת קוד וייצור.
דפוסים גם נהנים מתיעוד. הצגת ביטוי רגולרי לצד הקלט שהוא צריך להתאים והקלט שהוא לא צריך להתאים הופכת את הכוונה למפורשת. מתחזקים עתידיים (כולל עצמך בעוד שישה חודשים) מעריכים מקרי בדיקה מתועדים יותר משהם מעריכים מקרי בדיקה חכמים.
הקלד דפוס, הקלד קלט בדיקה, ראה התאמות מודגשות בשידור חי.
הביטוי הרגולרי של JavaScript עוקב אחר מפרט ECMAScript. מאפיינים עיקריים: מחלקות תווים ([abc], [^abc]), מכמתים (*, +, ?, {n,m}), חילופין (|), קיבוץ ((...)), קבוצות לכידה ולא לכידה, מבט קדימה והסתכלות אחורה (מנועים מודרניים), הפניות לאחור, קבוצות שמות, בריחת מאפיין Unicode (עם סט דגל U), ורצפי הבריחה הסטנדרטיים.
הבדלים חשובים מ-PCRE ו-Python: תמיכת lookbehind היא עדכנית ב-JavaScript (2018+); קבוצות שמות משתמשות בתחביר (?<name>...); חלק מהפריצות של Unicode מחייבות את דגל ה-u לעבוד כהלכה. יש לבדוק תבניות המיועדות לשימוש חוצה שפות מול התיעוד של כל יעד.
ביצועים: מנועי רגקס מבוססי מעקב לאחור (רובם כולל JavaScript) יכולים להיות בעלי מסלול קטסטרופלי לאחור על דפוסים פתולוגיים מסוימים. בדיקות שתולים את הבוחן הן סימן לכך שהתבנית זקוקה לפישוט - בדרך כלל על ידי הימנעות מכימות מקוננות והחלפות מעורפלות.