מחשביםתכנות

Javascript, דוגמאות ביטוי רגולרי, לבדוק ביטוי רגיל

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

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

= RegExp אובייקט + מנוע תבנית

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

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

דפוס ביטוי רגולרי

מותרים שתי אפשרויות:

var expOne = / abc * / i;

var expTwo = רגולרי ( "abc *", "אני");

בדרך כלל זה השתמש בשיטה הראשונה. במקרה השני, הציטוטים, כי כדי להשתמש בתו "\", זה חייב לבוא אחרי הכללים המקובלים.

ה'אני '- הדגל המציין "רישיות". אתה יכול גם להשתמש ז "דגלים -« חיפוש גלובלי" ו 'ז' - חיפוש רב-קו.

הסמל "/" כדי לציין נפוץ להשתמש בתבנית.

את ההתחלה ואת הסוף של ביטוי רגולרי

ה "^" מגדיר את האופי (ים) שממנו ניתן להתחיל הביטוי הרגיל, ואת "$" קובע אילו הדמות (ים) חייב להיות בסוף. אתה לא צריך להתנסות איתם בתוך ביטוי, שבו יש להן משמעות אחרת.

לדוגמה,

var eRegExp = RegExp החדש (cRegExp, 'i');

var cRegRes = '';

var sTest = 'ABCZ';

אם (eRegExp.test (sTest)) {

cRegRes + = '- כן';

} Else {

cRegRes + = '- לא';

}

var dTestLine = document.getElementById ( 'scTestLine');

dTestLine.innerHTML = 'הביטוי /' + cRegExp + '/ עבור השורה "' + sTest + '"' + cRegRes.

האלמנט "scTestLine" תגרום (משתנה cRegExp יש משמעות מתאימה):

הביטוי / ^ ABCZ $ / עבור המחרוזת "ABCZ" - כן

אם תסיר את "אני" הדגל, התוצאה היא:

הביטוי / ^ ABCZ $ / עבור המחרוזת "ABCZ" - אין

התכנים של ביטוי רגולרי

ביטוי רגולרי הוא רצף של תווים, המהווה את נושא החיפוש. הביטוי / QWERTY / מחפש הכניסה היא רצף זה:

הביטוי / QWERTY / עבור המחרוזת "qwerty" - כן

הביטוי / QWERTY / עבור המחרוזת "123qwerty456" - כן

השינויים "^" הם ביטויים:

qwerty הביטוי / ^ / עבור המחרוזת "123qwerty456" - אין

הביטוי / ^ qwerty / עבור המחרוזת "qwerty456" - כן

באופן דומה, עבור סוף סמל קו. ביטויים רגולריים לאפשר עקביות: למשל, [AZ], [AZ], [0-9] - כל אותיות האלפבית במקרה או דמויות הזה. אותיות רוסיות גם עשויות לשמש, אבל צריך לשים לב את הקידוד של מחרוזות (אשר בקש כי הוא בקש) והדפים. לעתים קרובות מכתבים רוסים, כמו גם תווים מיוחדים, עדיף להגדיר קודים.

כאשר הערכות ביטוי רגולרי יכול לציין אפשרויות עבור נוכחות של סימנים מסוימים במקום מסוים, עם המספר שלהם נתון כדלקמן: "*" = 0 חזרות או יותר פעמים; "+" = 1 או יותר פעמים החזרה; {1} זהה, כ '+'; {N} = החזרה בדיוק n פעמים; {N,} = n פעמים החזרה או יותר; {N, m} = חזרה על n פעמים מ '.

שימוש בסוגריים, אתה יכול לציין את התווים של אפשרויות. זה נראה כך. [ABCD] = [מודעה] = כל סמל ארבע: 'א', ב ', 'ג' או 'ד'. אתה יכול לציין אחרת. כל תו פרט לאלה המפורטים בקבוצה: [^ ABCD] = כל תו אחר מאשר "א", ב ', "ג" או "ד". '?' הוא מציין כי בשלב זה הסמל לא יכול להיות. '' מציין תו כלשהו מלבד המציין את השורה החדשה. זה 'n \', '\ r', '\ u2028' או '\ u2029'. הביטוי '\ s * | * S \' = '[\ s | \ S] *' פירושו חיפוש עבור כל תו, כולל בשורות חדשות.

גרסאות פשוטה של ביטוי רגולרי

הביטוי "[\ s | \ S] *" - מרחב החיפוש, או היעדרה, כי הוא כל כך על הקו. במקרה זה, הסמל "\ s" מצביע על מרחב, ו "\ S" - בהיעדרו.

באופן דומה, אתה יכול להשתמש "\ ד" כדי לחפש את הספרות אחרי הנקודה העשרונית, ו "\ D" למצוא דמות שאינה מספרית. סימון "\ ו", "r" ו "\ n" מתאים בצורה להאכיל, מעבר לשורה והקו-feed.

הדמות הלשונית - '\ t', אנכית - 'נ \'. ייעודו "\ ג" מוצא כל תו האלפבית הלטיני (אותיות, ספרות, וסימן קו תחתון) = [A-Za-z0-9_].

ייעודו '\ W' הוא שווה ערך ל [^ A-Za-z0-9_]. משמעות הדבר היא כל תו שאינו אות באלפבית, מספר, או "_".

אופי חיפוש '\ 0' = חיפוש תווים NUL. חיפוש '\ xHH' או '\ Uhhhh' = חיפוש קוד התו או HHHH HH בהתאמה. H - ספרתית הקסדצימלי.

ניסוח וקידוד מומלץ של ביטוי רגולרי

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

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

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

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

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

הסוגריים בביטוי הרגיל

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

var cRegExp = "[AZ] * (png | jpg | gif).";

var eRegExp = RegExp החדש (cRegExp, 'i');

var cRegRes = '';

var sTest = 'picture.jpg';

אם (eRegExp.test (sTest)) {

cRegRes + = '- כן';

} Else {

cRegRes + = '- לא';

}

תוצאות:

הביטוי /[az]*.(png|jpg|gif)/ עבור הקו "picture.jpg" - כן

ביטוי /^[ad][az]*.(png|jpg|gif)/ עבור קו "picture.jpg" - אין

הביטוי /^[ad][az]*.(png|jpg|gif)/ עבור הקו "apicture.jpg" - כן

ביטוי /^[ad][az]*.(png|jpg|gif)/ עבור קו "apicture.jg" - אין

יצוין כי כל, ואז כוכבית רשאית להיות נוכחת אפס פעמים. משמעות הדבר היא כי "העונה הסדירה" יכולה לעבוד בדרכים בלתי צפויות לפחות.

בדוק RegExp - בבדיקת דוא"ל

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

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

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

var eRegExp = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s @ "] +) *) | (". + ")) @ ((\ [[0-9] {1,3} \ [0-9] {1,3} \ [0-9] {.. . 1,3} \ [0-9] {1,3}]) | (. ([a-zA-Z \ -0-9] + \) + [א-za-z] {2}) ) $ /;

מחרוזת var sTest ='SlavaChip@sci.by "נותן נכון, אז יש מחרוזת זוהי כתובת הדוא"ל-נכונה. הביקורת נערכה על ידי eRegExp.test (sTest).

שימוש מעשי: טיפול של דואר אלקטרוני

שיטת Exec מספקת מערך התפוקה, קוראים:

var aResult = eRegExp.exec (sTest);

= CRegRes '
' + aResult.length + '
';
עבור (var i = 0; i cRegRes + = aResult [i] + '
';
}

זה נותן את התוצאה הבאה:

9
Slava.Chip@sci.by
Slava.Chip
Slava.Chip
.Chip
undefined
sci.by
undefined
sci.by
Sci.

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

"עונה סדירה" פופולרית

JavaScript ביטוי רגולרי נתון לדוא"ל לא רק יש אפשרויות רבות קלות יותר. לדוגמה, /^[\w-\.]+@[\w-]+\.[az]{2,3}$/i. עם זאת, התגלמות זו לוקחת בחשבון שלא כל ההתגלמויות של רשומת כתובת הדוא"ל.

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

חשוב לקחת בחשבון את הרגיל "המימד האנושי." אחרי ביטוי רגיל רשמית JavaScript עבור הטלפון, אשר עשוי להיות המבקר (אדם), היא ניתנת בדרכים שונות: 123-45-67, (29) 1,234,567, 80291234567 או 375,291,234,567. וזה בכל זאת מספר. איות דפוסים מרובים אינה תמיד מקובלת, קיבעון נוקשה של הכללים לכתיבת מספרים עשויים ליצור אי נוחות או הגבלות מיותרות. אופציה / ^ \ ד [\ ד \ (\) \ -] {4,14} $ \ ד / i מתאים ברוב המקרים אתה לבדוק את מספר הטלפון שלך.

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

הביטוי / ^ \ d + $ / אני בודק רק מספרים ביטוי /^\d+\.\d+$/i מאפשר שימוש נקודה כדי לציין את חלק השבר של המספר.

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

בדוק את התאריכים - פשוט לקומפלקס

קחו עוד ביטויים רגולריים JavaScript. דוגמאות עד כה, כמו לגבי מספר מספרי טלפון מייצגים בחירה בין קשיחות וגמישות. תאריך האירוע - אחד הנתונים החיוניים, אשר לעתים קרובות צריך להיות מנוהל. אבל תיקון הקלט בפורמט מסוים: "dd-mm-yyyy 'או' d.m.gg "מוביל לעתים קרובות חוסר שביעות רצון לקוחות. המעבר מתחום קלט של היום-חודש, מלא HTML-צורה קלאסית, לא יכול להתקיים כאשר אתם נכנסים רק ספרה אחת, ואת הקלט השני יכול להיות קשה. לדוגמא, בתחום של היום זה הוצג 3 והמספר הבא 2 אינו מחליף את הראשון, והוא מיוחס לה 32, אשר, כמובן, יגרום אי נוחות.

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

חיפוש והחלפה, זיכרון ביטוי רגולרי

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

var cRegExp = / ([א-ת] +) \ s ([א-ת] +) \ s ([א-ת] +) / i; // כשמחפש שלוש "משתנה"

var sTest = 'במאמר זה טוב!';
var cRegRes = sTest.replace (cRegExp, "2 $, 3 $, 1 $");

var dTestLine = document.getElementById ( 'scTestLine');

dTestLine.innerHTML 'הביטוי' = + cRegExp + 'עבור המחרוזת "' + sTest + '" פונים:' + cRegRes;

תוצאה:

הביטוי / ([AZ] +) \ s ([AZ] +) \ s ([AZ] +) / i עבור הקו "מאמר זה הוא טוב!" מתוך: המאמר הוא טוב, זה!

בעת ביצוע כל זוג סוגריים מאחסן את התוצאה ב "משתנה" n $, כאשר n - מספר זוגות סוגריים (1 $, 2 $, ...). בניגוד קונבנציונלי, כאן מספור משתנה הוא 1, לא 0.

המלצות כלליות

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

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

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

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

JavaScript, מחרוזת ו- RegExp

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

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

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

הבנת המבנה ואת ההיגיון של אובייקט רגולרי, כלומר אובייקט String, בתחביר וסמנטיקה של JavaScript - קוד בטוח ומאובטח נכון, המבצע היציב של כל דף באתר בכללותו.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 iw.delachieve.com. Theme powered by WordPress.