Skip to content

Commit d5429c8

Browse files
authored
Update article.md
1 parent 3190e58 commit d5429c8

1 file changed

Lines changed: 16 additions & 2 deletions

File tree

9-regular-expressions/03-regexp-unicode/article.md

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,9 @@
1313
|𝒳| `0x1d4b3` | 4 |
1414
|𝒴| `0x1d4b4` | 4 |
1515
|😄| `0x1f604` | 4 |
16+
|😍| `0x1F60D` |4|
1617

17-
بنابراین کاراکتر هایی مانند `a` و `` 2 بایت را اشغال می کنند، در حالی که کدهای `𝒳`، `𝒴` و `😄` طولانی تر هستند و 4 بایت دارند.
18+
بنابراین کاراکتر هایی مانند `a` و `` 2 بایت را اشغال می کنند، در حالی که کدهای `𝒳`، `𝒴` و `😄`, `😍` طولانی تر هستند و 4 بایت دارند.
1819

1920
مدت ها پیش، زمانی که زبان جاوااسکریپت ایجاد شد، رمزگذاری یونیکد ساده تر بود: هیچ کاراکتر 4 بایتی وجود نداشت. بنابراین برخی از ویژگی های زبان را به اشتباه مدیریت می کردند.
2021

@@ -25,7 +26,7 @@ alert('😄'.length); // 2
2526
alert('𝒳'.length); // 2
2627
```
2728

28-
...اما ما می توانیم ببینیم که فقط یک کاراکتر وجود دارد، درست است؟ نکته این است که `length` آن 4 بایت را به عنوان دو کاراکتر 2 بایتی در نظر می گیرد. این نادرست است، زیرا آنها باید فقط با هم در نظر گرفته شوند (به اصطلاح "surrogate pair"، می توانید در مورد آنها در مقاله <info:string> بخوانید).
29+
اما ما می توانیم ببینیم که فقط یک کاراکتر وجود دارد، درست است؟ نکته این است که `length` آن 4 بایت را به عنوان دو کاراکتر 2 بایتی در نظر می گیرد. این نادرست است، زیرا آنها باید فقط با هم در نظر گرفته شوند (به اصطلاح "surrogate pair"، می توانید در مورد آنها در مقاله <info:string> بخوانید).
2930

3031
به‌ طور پیش‌ فرض، عبارات باقاعده نیز "کاراکتر های طولانی" 4 بایتی را به عنوان یک جفت 2 بایتی در نظر می‌ گیرند. همانطور که در مورد رشته ها اتفاق می افتد، ممکن است به نتایج عجیب و غریب منجر شود. این را کمی بعد، در مقاله <info:regexp-character-sets-and-ranges> خواهیم دید.
3132

@@ -149,6 +150,19 @@ alert( str.match(regexp) ); // $2,€1,¥9
149150

150151
بعداً، در مقاله <info:regexp-quantifiers> خواهیم دید که چگونه به دنبال اعدادی بگردیم که دارای ارقام زیادی هستند.
151152

153+
## کتابخانه ها
154+
کتابخانه ها به مدیریت یونیکد در جاوا اسکریپت کمک می کنند:
155+
156+
157+
در [XRegExp](https://xregexp.com/) که یک کتابخانه عبارات معمولی است و دارای یک افزونه رسمی برای تطبیق دسته‌ها، اسکریپت‌ها، بلوک‌ها و ویژگی‌های یونیکد است، از طریق یکی از دو ساختار زیر ساخته میشود:
158+
- اولین ساختار: \p{...} \p{^...} \P{...}
159+
160+
برای مثال، \p{Letter} با حروف الفبای مختلف مطابقت دارد در حالی که \p{^Letter} و \P{Letter} هر دو با سایر نقاط کد مطابقت دارند. [این مقاله](https://exploringjs.com/es5/ch30.html)شامل یک نمای کلی از XRegExp است.
161+
162+
163+
- دومین ساختار: API بین‌المللی‌سازی ECMAScript که می توان به [API بین‌المللی‌سازی ECMAScript](https://exploringjs.com/es5/ch30.html#i18n_api) مراجعه کرد، ترکیب‌بندی آگاه از یونیکد (مرتب‌سازی و جستجوی رشته‌ها) و موارد دیگر را فراهم می‌کند.
164+
165+
152166
## خلاصه
153167

154168
پرچم `pattern:u` پشتیبانی از یونیکد را در عبارات منظم فعال می کند.

0 commit comments

Comments
 (0)