Skip to content

Commit 64b8932

Browse files
review and fix all
1 parent 53e4b76 commit 64b8932

1 file changed

Lines changed: 6 additions & 5 deletions

File tree

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

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ alert('😄'.length); // 2
2525
alert('𝒳'.length); // 2
2626
```
2727

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

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

@@ -35,7 +35,7 @@ alert('𝒳'.length); // 2
3535

3636
هر کاراکتر در یونیکد دارای ویژگی های زیادی است. آنها توصیف می کنند که کاراکتر به چه "رده ای" تعلق دارد و حاوی اطلاعات متفرقه در مورد آن است.
3737

38-
به عنوان مثال، اگر یک کاراکتر دارای ویژگی `Letter` باشد، به این معنی است که کاراکتر متعلق به الفبا (از هر زبان) است. خاصیت `Number` به این معنی است که یک رقم است: شاید عربی یا چینی و غیره.
38+
به عنوان مثال، اگر یک کاراکتر دارای ویژگی `Letter` باشد، به این معنی است که کاراکتر متعلق به الفبا (از هر زبان) است. ویژگی `Number` به این معنی است که آن کاراکتر یک رقم است: شاید عربی یا چینی و غیره.
3939

4040
می‌ توانیم کاراکترهایی را با یک ویژگی جستجو کنیم که به صورت `{…}pattern:\p` نوشته شده است. برای استفاده از `{…}pattern:\p`، یک عبارت باقاعده باید دارای پرچم `pattern:u` باشد.
4141

@@ -47,7 +47,7 @@ alert('𝒳'.length); // 2
4747
let str = "A ბ ㄱ";
4848

4949
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 ،بدون انطباق)
5151
```
5252

5353
در اینجا دسته بندی کاراکتر های اصلی و زیر شاخه های آنها آمده است:
@@ -93,7 +93,7 @@ alert( str.match(/\p{L}/g) ); // null (بدون منطبق، \p بدون پرچ
9393

9494
بنابراین، به عنوان مثال اگر به حروف کوچک نیاز داریم، می‌ توانیم `pattern:\p{Ll}`، علائم نگارشی: `pattern:\p{P}` و غیره را بنویسیم.
9595

96-
دسته های نشات گرفته شده دیگری نیز وجود دارد، مانند:
96+
دسته های مشتق شده دیگری نیز وجود دارد، مانند:
9797
- `Alphabetic` (`Alpha`)، شامل حروف `L`، به اضافه اعداد حروف `Nl` (مثلاً Ⅻ - یک کاراکتر برای عدد رومی 12)، به‌علاوه برخی از نمادهای دیگر `Other_Alphabetic` (`OAlpha`).
9898
- `Hex_Digit` شامل اعداد هگزا دسیمال است. `0-9` `a-f`
9999
- ...و غیره.
@@ -120,7 +120,8 @@ alert("number: xAF".match(regexp)); // xAF
120120
### مثال: هیروگلیف چینی
121121

122122
بیایید دنبال هیروگلیف چینی بگردیم.
123-
یک ویژگی یونیکد `Script` (یک سیستم نوشتاری) وجود دارد که ممکن است دارای مقدار باشد: `سیریلیک`، `یونانی`، `عربی`، `هان` (چینی) و غیره، [فهرست کامل در اینجا آمده است](https://en.wikipedia.org/wiki/Script_(Unicode)).
123+
124+
یک ویژگی یونیکد `Script` (یک سیستم نوشتاری) وجود دارد که ممکن است دارای مقدارهای روبرو باشد: `Cyrillic`، `Greek`، `Arabic`، `Han` (چینی) و غیره، [فهرست کامل در اینجا آمده است](https://en.wikipedia.org/wiki/Script_(Unicode)).
124125

125126
برای جستجوی کاراکترها در یک سیستم نوشتاری معین، باید از `<pattern:Script=<value` استفاده کنیم، به عنوان مثال. برای حروف سیریلیک: `pattern:\p{sc=Cyrillic}`، برای هیروگلیف چینی: `pattern:\p{sc=Han}` و غیره:
126127

0 commit comments

Comments
 (0)