This pattern has 2 capturing groups with 2 flags (gi) and is broken down into 14 parts below.
Flags
gglobal - find all matches in the input, not just the first oneiignore case - letters match regardless of upper or lower case^Start-of-string anchor (or start of a line with the m flag)(?<user>Start of a named capturing group "user" - saves its match under that name[a-z0-9._%+-]A single character from the set: the range "a" to "z", the range "0" to "9", the character ".", the character "_", the character "%", the character "+", the character "-"+Repeated one or more times)End of the group@A literal "@" character(?<domain>Start of a named capturing group "domain" - saves its match under that name[a-z0-9.-]A single character from the set: the range "a" to "z", the range "0" to "9", the character ".", the character "-"+Repeated one or more times\.A literal "." character (the backslash removes its special meaning)[a-z]A single character from the set: the range "a" to "z"{2,}Repeated 2 or more times)End of the group$End-of-string anchor (or end of a line with the m flag)
מסביר ביטוי רגולרי לוקח ביטוי רגולרי ומתרגם אותו לאנגלית פשוטה, מבנה אחד בכל פעם. במקום לפזול על קו צפוף כמו ^(?<user>[a-z0-9._%+-]+)@... אתה מקבל פירוט מסומן: החלק הזה הוא עוגן, זוהי קבוצת לכידת שם, מחלקת התווים הזו פירושה "אות קטנה, ספרה, נקודה או מקף", והמכומת הזה פירושו "פעם אחת או יותר". זה הופך קיר של סמלים לרשימת בדיקה שאתה יכול לקרוא.
ביטויים רגולריים הם קומפקטיים בעיצובם, מה שהופך אותם לחזקים אך קשים לסקירה. ניתן לכתוב את אותה תבנית בדרכים רבות, וקו נטוי אחורי תועה בודד או מכמת חמדן משנים את המשמעות לחלוטין. קריאת regex לא מוכר - בסקירת קוד, קובץ תצורה ישן או תשובה של Stack Overflow - פירושו בדרך כלל הדמיה מנטלית של המנוע. כלי זה עושה עבורך את הסימולציה הזו ומציג את התוצאה כרשימה מסודרת ומחוררת המשקפת את מבנה התבנית, כולל קבוצות מקוננות ומבטים מסביב.
הכל פועל בצד הלקוח באותו מנוע JavaScript Regexp שהקוד שלך משתמש בו, כך שהתנהגות הדגל והתוקף שאתה רואה כאן תואמים לייצור. התבנית שלך לעולם לא מועלית, שום דבר לא נרשם, והכלי ממשיך לעבוד במצב לא מקוון לאחר טעינת הדף. זה משנה כאשר ה-Regex שאתה מנסה להבין מגיע מבסיס קוד פרטי או תואם פורמטים של נתונים רגישים.
המסביר אומר לך מה אומר דפוס, לא אם זה הדפוס המתאים לנתונים שלך - כדי לבדוק את זה, הפעל אותו מול קלט אמיתי בבודק הביטוי הרגולרי. מכיוון שהוא מתחבר עם המנוע של הדפדפן עצמו, מבנים שקיימים ב-PCRE אך לא ב-ECMAScript מתנהגים בשתי דרכים שונות. מכמתים רכושניים כגון A++, קבוצות אטומיות (?>...) ו-Recursion (?r) נדחים על הסף, עם המסר של המנוע עצמו. המקרה העדין יותר הוא \A ו-\Z: ללא דגל U JavaScript מתייחס אליהם כאל בריחת זהות, כך שתבנית שהועתקה מ-PHP או Python מוסברת כתואמת גבול A או Z מילולי ולא כגבול מחרוזת, ולא מועלית שגיאה. מכמים מקוננים כמו (A+)+ מתוארים גם הם בדרך כלל; מעקב לאחור קטסטרופלי הוא מאפיין זמן ריצה של הקלט, לא משהו גלוי במבנה.
היכנסו לתבנית ללא החתכים שמסביב - רק הביטוי עצמו. לחץ על טען דוגמה כדי להתחיל מדוגמה של התאמת דוא"ל עובדת.
החלף את הדגלים שבהם התבנית משתמשת (G, I, M, S, U, Y, D). המסביר מדווח על מה שכל דגל עושה ומאמת את התבנית מול שילוב הדגל הזה.
כל אסימון מופיע לפי הסדר עם תיאור אנגלי רגיל. קבוצות מקוננות מסומנות כך שמבנה התבנית נראה במבט חטוף.
העתק את הפירוט המלא בטקסט רגיל כדי להדביק הערת קוד, הערת משיכה או תיעוד כדי שהקורא הבא לא יצטרך לפענח אותו.
כל עוגן, מחלקת תווים, מכמת, קבוצה ובריחה מקבל שורה משלו עם תיאור, לפי הסדר שהמנוע קורא אותם
קבוצות לכידת, לא לוכדות, שמות וכל ארבעת סוגי ההסתכלות מסומנים ומחורצים כך שקל לעקוב אחר המבנה המקונן כך שקל לעקוב אחר
הדגלים G, I, M, S, U, Y ו-D מתוארים כל אחד בהקשר, כך שאתה מבין איך הם משנים את כל ההתאמה, לא רק את התחביר
הדפוסים מאומתים עם מנוע ה-Regexp המקורי של הדפדפן, כך שביטוי לא חוקי נתפס עם השגיאה המדויקת לפני שאתה מסתמך עליו
Extract email addresses, URLs, phone numbers, and IPv4 addresses from any block of text. De-duplicate, sort, and copy the results. Runs client-side.
Find and replace text with a regular expression, using capture group backreferences like $1 and named groups, with full flag support
Test regular expressions against sample text with live match highlighting, capture groups, and full flag support
Build, test, and debug regular expressions with real-time matching and a comprehensive cheatsheet
0 comments
No comments yet. Be the first to share your thoughts!