אינטרנט ישראל
  • ראשי
  • אודות רן בר-זיק ואינטרנט ישראל
  • ערוץ טלגרם
  • קבלו עדכונים במייל
  • התחברו אלי בטוויטר
  • התחברו אלי בלינקדאין
  • ספר ג’אווהסקריפט
  • ראשי
  • אודות רן בר-זיק ואינטרנט ישראל
  • ערוץ טלגרם
  • קבלו עדכונים במייל
  • התחברו אלי בטוויטר
  • התחברו אלי בלינקדאין
  • ספר ג’אווהסקריפט
ראשי » מדריכים » ES20XX » ES2018 – שימוש ביוניקוד בביטויים רגולריים

ES2018 – שימוש ביוניקוד בביטויים רגולריים

רן בר-זיק אפריל 15, 2018 7:07 am 2 תגובות

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

»ES2018 – ביטויי lookBehind ו-lookAhead בביטויים רגולריים
»ES2018 – יצירת finally ב-promise
כדאי תמיד להשאר מעודכנים! הרשמו לעדכונים של האתר במייל! - המייל יישלח כל יום ראשון בעשר בבוקר ויכיל אך ורק את המאמרים שהתפרסמו באינטרנט ישראל. ללא ספאם, ללא הצפות, ללא בלגנים. אם יש לכם טלגרם, בדקו את ערוץ הטלגרם של האתר שבו אני מעדכן על פוסטים חדשים 🙂 אם אתם רוצים ללמוד תכנות באופן מקיף ומסודר, הצטרפו לאלפי הלומדים בפרויקט "ללמוד ג'אווהסקריפט בעברית" שמלמד לתכנת בג'אווהסקריפט, ב-Node.js ובריאקט. הפרויקט הוא הפרויקט הספרותי המוביל בהדסטארט. בשיתוף הקריה האקדמית אונו.

טוב, זה דבר די מגניב שאפשר לעשות בביטויים רגולריים (שזה התרגום ל regular expression בעברית, יא נודניקים) וזה די העיף לי את הראש. מה הערך של זה? יש לזה ערך רב ובכל מקרה, כיף ואפילו טוב לדעת. נתחיל? בטח שנתחיל.

אז את הפלאג של u לביטויים רגולריים אתם מכירים? זה מאפשר לנו תמיכה ביוניקוד. למשל, הקוד המדהים הבא:


let a = /?$/u.test('?'); // true

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


let a = /^\p{Script=Hebrew}+$/u.test('עברית'); // true

תפסתי את תשומת הלב שלכם? הדבר הזה נכנס עכשיו ב-ES2018 – תכונות יוניקוד או unicode properties. ויש כל כך הרבה מהן! הפורמט הוא פשוט ביותר:


\p{LoneUnicodePropertyNameOrValue}

האותיות p\ ואז סוגריים מסולסלות שיש בתוכן את התכונות של היוניקוד – ניתן עם שם התכונה והערך או רק תכונה מסוימת.


let a = /\p{General_Category=Lowercase_Letter}$/u.test('a'); // true

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

בגדול יש לנו כמה קטגוריות של תכונות.

הראשונה היא script. אותה כבר ראינו. Unicode Scripts היא


let a = /^\p{Script=Greek}+$/u.test('μετά') // true

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


let a = /^\p{Script=Hebrew}+$/u.test('שתי מילים') // false

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


let a = /^\p{General_Category=Dash_Punctuation}+$/u.test('-־') // true

או למשל סימני מטבעות:


let a = /^\p{General_Category=Currency_Symbol}+$/u.test('$') // true

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


let a = /^\p{General_Category=Currency_Symbol}[0-9]+$/u.test('₪400') // true

כאשר תו היוניקוד הוא רק חלק (קטן) מתוך הביטוי הרגולרי המלא.

ניתן להשתמש באות הגדולה P על מנת לעשות שלילה – למשל כל תו שהוא לא סימן כספי:


let a = /^\P{General_Category=Currency_Symbol}$/u.test('₪') // false

ה-P הגדולה היא בעצם שלילה.

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

כדאי תמיד להשאר מעודכנים! הרשמו לעדכונים של האתר במייל! - המייל יישלח כל יום ראשון בעשר בבוקר ויכיל אך ורק את המאמרים שהתפרסמו באינטרנט ישראל. ללא ספאם, ללא הצפות, ללא בלגנים. אם יש לכם טלגרם, בדקו את ערוץ הטלגרם של האתר שבו אני מעדכן על פוסטים חדשים 🙂 אם אתם רוצים ללמוד תכנות באופן מקיף ומסודר, הצטרפו לאלפי הלומדים בפרויקט "ללמוד ג'אווהסקריפט בעברית" שמלמד לתכנת בג'אווהסקריפט, ב-Node.js ובריאקט. הפרויקט הוא הפרויקט הספרותי המוביל בהדסטארט. בשיתוף הקריה האקדמית אונו.
ES2018

2 תגובות

  1. בקצרה הגב אפריל 15, 2018 בשעה 9:13 am

    היה שווה שלוש דקות ?

  2. עמית הגב אפריל 15, 2018 בשעה 10:57 am

    יש ציטוט יפה ועתיק:

    Some people, when confronted with a problem, think “I know, I’ll use regular expressions.” Now they have two problems.

    – Jamie Zawinski

השארת תגובה

ביטול

ללמוד ג'אווהסקריפט בעברית

ללמוד לתכנת ג'אווהסקריפט בעברית שגייס יותר משלוש מאות אלף שקל ולמעלה מ-2000 תומכים - בואו ללמוד עכשיו איך לתכנת.

רשימת הנושאים
  • מדריכים
    • ריאקט
    • ECMAScript 6
    • ES20XX
    • Node.js
    • Express
    • רספברי פיי
    • Babel
    • docker
    • MongoDB
    • Git
    • לימוד MySQL
    • SASS
    • jQuery
    • CSS3
    • HTML 5
    • SVN
    • LESS
  • פיתוח אינטרנט
    • פתרונות ומאמרים על פיתוח אינטרנט
    • jQuery Scripts
    • jQuery למתקדמים
    • יסודות בתכנות
    • נגישות אינטרנט
  • חדשות אינטרנט
  • מידע כללי על אינטרנט
    • רשת האינטרנט
    • בניית אתרי אינטרנט
  • rss logo

    לכל המאמרים

    לכל המאמרים שפורסמו באינטרנט ישראל משנת 2008 ועד עכשיו.
  • rss logo

    RSS Feed

    משתמשים בקורא RSS? אם כן, עקבו אחרי אינטרנט ישראל באמצעות פיד ה-RSS!
    מה זה RSS?
  • Twitter logo

    עקבו אחרי בטוויטר

    בחשבון הטוויטר שלי אני מפרסם עדכונים מהירים על חדשות בתחום התכנות והיזמות, התרעות על מצבי חירום ורכילות בוערת על תחום הווב.
    מה זה טוויטר?
  • facebook like image

    ערוץ הטלגרם של אינטרנט ישראל

    בערוץ הטלגרם של אינטרנט ישראל אני מפרסם את הפוסטים של באתר וכן עדכונים טכנולוגיים נוספים.
    מה זה טלגרם?
  • github logo

    הפרויקטים שלי בגיטהאב

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

העדכונים נשלחים אך ורק כאשר האתר מתעדכן.

כל הזכויות שמורות לרן בר-זיק ולאינטרנט ישראל | מדיניות הפרטיות של אתר אינטרנט ישראל | אתר אינטרנט ישראל נגיש לפי תקן WCAG 2.0 AA | הצהרת הנגישות של האתר | אבטחת מידע ודיווח על בעיית אבטחת מידע

גלילה לראש העמוד