You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: 9-regular-expressions/03-regexp-unicode/article.md
+6-5Lines changed: 6 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -25,7 +25,7 @@ alert('😄'.length); // 2
25
25
alert('𝒳'.length); // 2
26
26
```
27
27
28
-
...اما ما می توانیم ببینیم که فقط یکی وجود دارد، درست است؟ نکته این است که `length` آن را 4 بایت به عنوان دو کاراکتر 2 بایتی در نظر می گیرد. این نادرست است، زیرا آنها باید فقط با هم در نظر گرفته شوند(به اصطلاح "جفت جانشین"، می توانید در مورد آنها در مقاله <info:string> بخوانید).
28
+
...اما ما می توانیم ببینیم که فقط یک کاراکتر وجود دارد، درست است؟ نکته این است که `length` آن 4 بایت را به عنوان دو کاراکتر 2 بایتی در نظر می گیرد. این نادرست است، زیرا آنها باید فقط با هم در نظر گرفته شوند(به اصطلاح "surrogate pair"، می توانید در مورد آنها در مقاله <info:string> بخوانید).
29
29
30
30
به طور پیش فرض، عبارات باقاعده نیز "کاراکتر های طولانی" 4 بایتی را به عنوان یک جفت 2 بایتی در نظر می گیرند. همانطور که در مورد رشته ها اتفاق می افتد، ممکن است به نتایج عجیب و غریب منجر شود. این را کمی بعد، در مقاله <info:regexp-character-sets-and-ranges> خواهیم دید.
31
31
@@ -35,7 +35,7 @@ alert('𝒳'.length); // 2
35
35
36
36
هر کاراکتر در یونیکد دارای ویژگی های زیادی است. آنها توصیف می کنند که کاراکتر به چه "رده ای" تعلق دارد و حاوی اطلاعات متفرقه در مورد آن است.
37
37
38
-
به عنوان مثال، اگر یک کاراکتر دارای ویژگی `Letter` باشد، به این معنی است که کاراکتر متعلق به الفبا (از هر زبان) است. خاصیت`Number` به این معنی است که یک رقم است: شاید عربی یا چینی و غیره.
38
+
به عنوان مثال، اگر یک کاراکتر دارای ویژگی `Letter` باشد، به این معنی است که کاراکتر متعلق به الفبا (از هر زبان) است. ویژگی`Number` به این معنی است که آن کاراکتر یک رقم است: شاید عربی یا چینی و غیره.
39
39
40
40
می توانیم کاراکترهایی را با یک ویژگی جستجو کنیم که به صورت `{…}pattern:\p` نوشته شده است. برای استفاده از `{…}pattern:\p`، یک عبارت باقاعده باید دارای پرچم `pattern:u` باشد.
41
41
@@ -47,7 +47,7 @@ alert('𝒳'.length); // 2
47
47
let str ="A ბ ㄱ";
48
48
49
49
alert( str.match(/\p{L}/gu) ); // A,ბ,ㄱ
50
-
alert( str.match(/\p{L}/g) ); // null (بدون منطبق، \p بدون پرچم "u" کار نمی کند)
50
+
alert( str.match(/\p{L}/g) ); // null (کار نمی کند "u" بدون پرچم \p ،بدون انطباق)
51
51
```
52
52
53
53
در اینجا دسته بندی کاراکتر های اصلی و زیر شاخه های آنها آمده است:
بنابراین، به عنوان مثال اگر به حروف کوچک نیاز داریم، می توانیم `pattern:\p{Ll}`، علائم نگارشی: `pattern:\p{P}` و غیره را بنویسیم.
95
95
96
-
دسته های نشات گرفته شده دیگری نیز وجود دارد، مانند:
96
+
دسته های مشتق شده دیگری نیز وجود دارد، مانند:
97
97
-`Alphabetic` (`Alpha`)، شامل حروف `L`، به اضافه اعداد حروف `Nl` (مثلاً Ⅻ - یک کاراکتر برای عدد رومی 12)، بهعلاوه برخی از نمادهای دیگر `Other_Alphabetic` (`OAlpha`).
98
98
-`Hex_Digit` شامل اعداد هگزا دسیمال است. `0-9``a-f`
یک ویژگی یونیکد `Script` (یک سیستم نوشتاری) وجود دارد که ممکن است دارای مقدار باشد: `سیریلیک`، `یونانی`، `عربی`، `هان` (چینی) و غیره، [فهرست کامل در اینجا آمده است](https://en.wikipedia.org/wiki/Script_(Unicode)).
123
+
124
+
یک ویژگی یونیکد `Script` (یک سیستم نوشتاری) وجود دارد که ممکن است دارای مقدارهای روبرو باشد: `Cyrillic`، `Greek`، `Arabic`، `Han` (چینی) و غیره، [فهرست کامل در اینجا آمده است](https://en.wikipedia.org/wiki/Script_(Unicode)).
124
125
125
126
برای جستجوی کاراکترها در یک سیستم نوشتاری معین، باید از `<pattern:Script=<value` استفاده کنیم، به عنوان مثال. برای حروف سیریلیک: `pattern:\p{sc=Cyrillic}`، برای هیروگلیف چینی: `pattern:\p{sc=Han}` و غیره:
0 commit comments