ממיר חינם

Regex בוחן

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

//g
דגלים:

אודות כלי זה

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

בודק זה פועל בדפדפן שלך באמצעות מנוע JavaScript regex (אותו אחד שהאפליקציה שלך משתמשת בו אם הוא פועל בדפדפן). דפוסים וטקסט בדיקה מתעדכנים באופן תגובתי: כל שינוי באחד מהם מפעיל מחדש את ההתאמה. קבוצות התאמה מודגשות, קבוצות שנלכדו מופיעות ברשימה ודגלים (לא תלויי רישיות, ריבוי שורות, גלובליות) נחשפים לבדיקה.

תחביר Regex משתנה בעדינות בין המנועים. JavaScript עוקב אחר מפרט ECMAScript; ל-Python, PCRE (בשימוש PHP ורבים אחרים), Java ו-Go לכל אחד יש דיאלקטים משלהם עם תכונות חופפות אך לא זהות. דפוסים שפותחו כאן משתמשים בתחביר ECMAScript; ניידות חוצת מנועים מחייבת בדיקת תיעוד של כל מטרה.

למה להשתמש בבודק Regex

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

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

כיצד להשתמש

הקלד דפוס, הקלד קלט בדיקה, ראה התאמות מודגשות בשידור חי.

  1. הזן את התבנית שלך: הקלד את תבנית הביטוי הרגולרי בשדה התבנית. גם ריגול מילולי (/pattern/flags) וגם צורות דפוס בלבד פועלות; ניתן להגדיר דגלים באמצעות קלט הדגלים.
  2. הוסף קלט בדיקה: הדבק טקסט לדוגמה שהתבנית צריכה להתאים (ובאופן אידיאלי גם טקסט שהוא לא צריך להתאים). הבוחן מריץ את התבנית כנגד הקלט ומדגיש התאמות.
  3. הגדר דגלים: דגלים נפוצים: g (גלובלי, מצא את כל ההתאמות), i (לא תלוי רישיות), m (התחלות/סיומות של שורת התאמה מרובת שורות, ^ ו-$), s (דוטאל, . מתאים לשורות חדשות), u (Unicode).
  4. בדוק תוצאות: כל התאמה מודגשת בקלט. קבוצות לכידה מופיעות ברשימה עם אינדקס וערך קבוצתי. הבוחן מראה גם את ספירת ההתאמות ושגיאות קומפילציה בדפוס.

מקרי שימוש נפוצים

פרטים טכניים

הביטוי הרגולרי של JavaScript עוקב אחר מפרט ECMAScript. מאפיינים עיקריים: מחלקות תווים ([abc], [^abc]), מכמתים (*, +, ?, {n,m}), חילופין (|), קיבוץ ((...)), קבוצות לכידה ולא לכידה, מבט קדימה והסתכלות אחורה (מנועים מודרניים), הפניות לאחור, קבוצות שמות, בריחת מאפיין Unicode (עם סט דגל U), ורצפי הבריחה הסטנדרטיים.

הבדלים חשובים מ-PCRE ו-Python: תמיכת lookbehind היא עדכנית ב-JavaScript (2018+); קבוצות שמות משתמשות בתחביר (?<name>...); חלק מהפריצות של Unicode מחייבות את דגל ה-u לעבוד כהלכה. יש לבדוק תבניות המיועדות לשימוש חוצה שפות מול התיעוד של כל יעד.

ביצועים: מנועי רגקס מבוססי מעקב לאחור (רובם כולל JavaScript) יכולים להיות בעלי מסלול קטסטרופלי לאחור על דפוסים פתולוגיים מסוימים. בדיקות שתולים את הבוחן הן סימן לכך שהתבנית זקוקה לפישוט - בדרך כלל על ידי הימנעות מכימות מקוננות והחלפות מעורפלות.

שיטות עבודה מומלצות

שאלות נפוצות

באיזה טעם regex הכלי הזה תומך?
הוא משתמש במנוע ה-RegExp המובנה של JavaScript, התומך בתחביר סטנדרטי, כולל מבטים, מבטים (בדפדפנים מודרניים), קבוצות לכידה עם שם, ו-Unicode escapes.
האם אני יכול לבדוק החלפות regex?
כן. עבור למצב החלפה כדי להזין דפוס החלפה. אתה יכול להשתמש ב-$1, $2 וכו' עבור הפניות לאחור של קבוצת לכידה, ו-$<name> עבור קבוצות עם שם.
מדוע הביטוי הרגולרי שלי תואם כאן אחרת מאשר ב-Python/PHP?
לשפות תכנות שונות יש מנועי regex מעט שונים. JavaScript אינו תומך בכימות רכושניות או בתכונות ספציפיות ל-PCRE. תחביר הליבה (מחלקות תווים, מכמות, קבוצות) זהה בכל השפות.
האם הכלי שומר את דפוסי הביטוי הרגולרי שלי?
לא. שום דבר לא נשמר או משודר. הכלי פועל כולו בדפדפן שלך. אתה יכול לסמן או לשתף דפוסים על ידי העתקת מחרוזת הביטוי הרגולרי.
כיצד אוכל להתאים דמות מיוחדת מילולית?
לברוח מזה עם קו נטוי אחורי. כדי להתאים נקודה מילולית: \. כדי להתאים קו נטוי מילולי: \\. בתוך כיתות אופי [...], רוב הדמויות המיוחדות מאבדות את משמעותן.
האם הבוחן פועל על שרת?
לא. הידור והתאמה של דפוסים מתרחשים בדפדפן שלך באמצעות אובייקט RegExp המקורי.
האם אוכל לבדוק תבניות עבור מנועי שאינם JavaScript?
לָרוֹב. עבור דפוסים פשוטים המנועים העיקריים מסכימים. עבור תכונות מתקדמות (מבט מאחור, קבוצות אטומיות, מכמתים רכושנית, נכסי Unicode escapes), אשר מול התיעוד של מנוע היעד.
האם הוא מתמודד עם קלט גדול מאוד?
עד כמה מגה בייט עובד בצורה חלקה. כניסות גדולות יותר עלולות להאט או לתלות את הדפדפן, במיוחד עם דפוסים המועדים לעקיבה לאחור.