473
צפיות
צפיות
7
תשובות
תשובות
שאלות ב RegExp
שלום!
אני רוצה להוסיף על הידע המועט שלי את regexp.
אז היסתכלתי ב FAQ של JavaScript וראיתי את הסינטקס של זה,אז חוץ מיזה שזה ניראה כמו סקריפט Perl מוזר ואני פוחד מוות למגעת בזה,זה גם לא משהוא ברור.
אשמח אם תסבירו לי מאיפה אפשר לילמוד את זה,כלומר,לילמוד ולהישאר בחיים מבלי להישתגעה.
תודה.
7 תשובות
חחח… גם אני חשבתי כך בהתחלה 😛
בא לך על ה- ?
או שמא אתה רוצה את ?
הדרך היחידה ללמוד RegExp
היא פשוט להתעסק עם זה..
מדריך קצר ל-regExp
(המדריך לא שלם ולא עובר על כל הנושא)
regExp זה אובייקט שיוצר תבנית טקסט
מכריזים עליו באחת משתי הדרכים הבאות
ע"י ה-constructor (הבונה)
var rExp = new RegExp("pattern","options")
או ע"י הליטרל (הדרך המומלצת והמהירה)
var rExp = /pattern/options
המאפיין options קובע האם האובייקט התייחס לכל הטקסט והאם הוא לא יתייחס להבדל בין אותיות גדולות לקטנות (CASE INSESITIVE)
כדי לסמן שהאובייקט יתייחס לכל הטקסט כותבים את האות ה-g (מהמילה global)
כדי לסמן שהאובייקט לא יתייחס להבדל בין אותיות גדולות לקטנות כותבים את האות i
ניתן להשתמש בשניהם ביחד ע"י כתיבת gi
דוגמאות:
var rExp = /pattern/gi // global & case insensitive
var rExp = /pattern/g // global
var rExp = /pattern/i // case insensitive
המאפיין pattern קובא את תבנית הטקסט שאליה האובייקט יתייחס
מאפיין זה יכול להכין סימנים מיוחדים(רגולריים) אותיות,מספרים ותווים רגילים
תווים רגולריים
– מסמן את התו שאחרי או escape sequence
לדוגמא: "\" – יסמן את התו הרגיל
n – יסמן שורה חדשה
^ – מסמן את תחילת המחרוזת. אם אובייקט ה-regExp אופיין כרב שורתי (multiline) אז התו ^ מסמן את התו שבא אחרי ה-n או r
$ – מסמן את סוף המחרוזת. אם אובייקט ה-regExp אופיין כרב שורתי (multiline) אז התו $ מסמל את התו שלפני ה-n או לפני ה-r
(המשך בהודעה הבאה)
המשך
* – מסמל שהתו שקדם לו יכול להופיע במחרוזת אפס פעמים או מס' פעמים ברצף. לדוגמא: *zo מסמל את האות z ואת המחרוזת zoo
+ – מסמל שהתו שקדם לו יכול להופיע פעם אחת לפחות או יותר ברצף. לדוגמא: *zo מסמל את המחרוזת zoo אבל לא את המחרוזת z
? – מסמל שהתו שלפניו יופיע פעם אחת או בכלל לא.
לדגומא: *(do(es מסמל את do ו-does
{n} – n הוא מספר אי שלילי. מסמל את התו שלפניו n פעמים בדיוק!
לדוגמא: {o{2 לא מסמל את o במחרוזת Bob אבל מסמל את את הדאבל o במחרוזת food
{,n} – n הוא מספר אי שלילי. מסמל את התו שלפניו לפחות n פעמים. לדוגמא {,o2} לא מסמל את ה-o במחרוזת Bob אבל כן מסמל את כל ה-o במחרוזת "foooooooooooooood"
{,o{0 שווה לתו *
{,1}o שווה לתו +
{n,m} nו-m הם מספרים אי שליליים כאשר n קטן מ-m. מסמל את התו שלפניו בין n ל-m פעמים
לדוגמא: {1,3} יסמל את ה-o היחיה במחרוזת Bob או את הדאבל o במחרוזת boobs 😛 או את הטריפל o במחרוזת foood אבל לא את ה-o במחרוזת gooooooooood
.(נקודה) – מסמל את כל התווים חוץ מה-escapse sequence הזה n . כדי לסמל את כל התווים כולל n משתמשים בתבנית [sS]
x|y – מסמל או את x או את y. לדוגמא
(z|f)ood
מסמל או את המחרוזת zood או את המחרוזת food
סדרות
[xyz] – מסמל רק את התווים הנמצאים בתוך ה[] מתוך המחרוזת. לדוגמא [abc] מסמל את ה-a ב-plain
[xyz^] – מסמל את כל התווים שלא נמצאים בתוך ה-[] מתוך מחרוזת. לדוגמא[abc^] מסמל את האות p ב-plain
[a-z] – מסמל את כל התווים שנמצים בין התו השמאלי למקף לתו הימני במקף. לדוגמא [a-z] מסמל את כל אותיות האלפאבית באנגלית.
[a-z^] – מסמל את כל התווים שלא נמצאים בין התו השמאלי למקף לתו הימני למקף. לדוגמא [a-z^] מסמל את כל התווים שהם לא אותיות באנגלית
(המשך בהודעה הבאה)
options ו-pattern
הם פרמטרים לא מאפיינים
המשך
שיטות
שיטת test
תחביר:
regExpObj.test([str])
הפרמטר str הוא מסוג מחרוזת והשיטה בודקת האם המחרוזת שמועברת כפרמטר ממלאת אחרי התבנית השיטה מחזירה ערך בוליאני (trueאו false). הדוגמא הבאה למשל בודקת האם במחרוזת יש אך ורק מספרים ואותיות.
var rExp1 = /[a-z0-9]/gi
var strTest = "nir the king"
var bAfterPattern = rExp.test(strToTest) // return true
השיטה compile
דורסת את הפרמטרים שהוגדרו עם הגדרת ה-regExp ושמה פרמטרים חדשים
var rExp = /[a-z]/gi; // with case insensitive
rExp.compile("[a-z]","g"); // without case insensitive
השיטה exec
שיטות באובייקט String
שדורשות שימוש ב-regExp
השיטה replace
תחביר
str.replace(regExp,strToReplace)
str – משתנה מחרוזת
regExp – אובייקט RegExp
strToReplace – מחרוזת שתחליף את כל הביטויים שנמצאו מתאימים לתבנית של אובייקט ה-regExp
השיטה match
תחביר
var anArray = str.match(regExp)
str – מחרוזת
regExp – אובייקט regExp
השיטה מחזירה מערך של כל הביטויים שנמצאו מתאימים לתבנית של אובייקט ה-regExp
השיטה search
תחביר
nPosition = str.search(regExp)
str – משתנה מחרוזת
regExp – אובייקט RegExp
מחזיר את המיקום של תחילת הביטוי שנמצא מתאים ל-pattern של ה-regExp
אם לא נמצא התאמה מוחזר 1- (מינוס אחד)