Skip to content

Commit 6c771b4

Browse files
Apply suggestions from code review
Co-authored-by: Mahdi Hashemi <mahdihashemiii939@gmail.com>
1 parent 44bb10f commit 6c771b4

1 file changed

Lines changed: 18 additions & 19 deletions

File tree

  • 9-regular-expressions/01-regexp-introduction

9-regular-expressions/01-regexp-introduction/article.md

Lines changed: 18 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22

33
عبارات باقاعده (Regular expressions) الگوهایی هستند که روشی قدرتمند برای جستجو و جایگزینی در متن ارائه می دهند.
44

5-
در جاوا اسکریپت، آنها از طریق شیء [RegExp](mdn:js/RegExp) استفاده می شوند و همچنین به خوبی با متد های رشته ها ادغام می شوند.
5+
در جاوااسکریپت، آنها از طریق شیء [RegExp](mdn:js/RegExp) استفاده می شوند و همچنین به خوبی با متد های رشته ها ادغام می شوند.
66

77
## عبارات باقاعده (Regular Expressions)
88

9-
عبارت باقاعده (همچنین "regexp"، یا فقط "reg") از یک *الگو(pattern)* و *پرچم(flags)* های اختیاری تشکیل می شوند.
9+
عبارت باقاعده (همچنین "regexp"، یا فقط "reg") از یک *الگو(pattern)* و *پرچم های(flags)* اختیاری تشکیل می شوند.
1010

1111
دو روش وجود دارد که می توان از آنها برای ایجاد یک شیء عبارت باقاعده استفاده کرد.
1212

@@ -20,21 +20,21 @@ regexp = new RegExp("pattern(الگو)", "flags(پرچم)");
2020

2121
```js
2222
regexp = /pattern/; // بدون پرچم
23-
regexp = /pattern/gmi; // با پرچم g, m, i (به زودی پوشش داده می شود)
23+
regexp = /pattern/gmi; // (به زودی گفته می‌شود) i، m، g با پرچم
2424
```
2525

2626
اسلش های `pattern:/.../` به جاوا اسکریپت می گوید که ما در حال ایجاد یک عبارت باقاعده هستیم. آنها همان نقش کوتیشن(') را برای رشته ها بازی می کنند.
2727

28-
در هر دو مورد، `regexp` به یک نمونه از کلاس داخلی `RegExp` تبدیل می‌ شود.
28+
در هر دو مورد، `regexp` به یک نمونه از کلاس درون‌ساخت`RegExp` تبدیل می‌ شود.
2929

30-
تفاوت اصلی بین این دو سینتکس این است که الگو با استفاده از اسلش‌های `/.../`، اجازه درج عبارات را نمی دهد (مانند حروف الفبای قالب(template literals) رشته با `${...}`). که آنها کاملا ساکن هستند.
30+
تفاوت اصلی بین این دو سینتکس این است که الگو با استفاده از اسلش‌های `/.../`، اجازه درج عبارات را نمی دهد (مانند حروف الفبای قالب(template literals) رشته با `${...}`). آنها کاملا ایستا هستند.
3131

32-
اسلش ها زمانی استفاده می شوند که عبارت باقاعده را در زمان نوشتن کد بدانیم -- و این رایج ترین حالت است. در حالی که `new RegExp` بیشتر زمانی استفاده می شود که ما نیاز به ایجاد یک regexp "در حال پرواز" از یک رشته تولید شده به صورت پویا داشته باشیم. برای مثال:
32+
اسلش ها زمانی استفاده می شوند که عبارت باقاعده را در زمان نوشتن کد بدانیم -- و این رایج ترین حالت است. در حالی که `new RegExp` بیشتر زمانی استفاده می شود که ما "در حین انجام کار" نیاز به ایجاد یک regexp از یک رشته که به صورت پویا تولید شده داشته باشیم. برای مثال:
3333

3434
```js
35-
let tag = prompt("چه بر چسبی می خواهید پیدا کنید؟", "h2");
35+
let tag = prompt("کدام تگ HTML را می خواهید پیدا کنید؟", "h2");
3636

37-
let regexp = new RegExp(`<${tag}>`); // مانند /<h2>/ اگر در اعلان بالا "h2" پاسخ داده شود
37+
let regexp = new RegExp(`<${tag}>`); // خواهد بود /<h2>/ جواب داده شود درست مانند "h2" اگر در اعلان بالا
3838
```
3939

4040
## پرچم ها (Flags)
@@ -56,28 +56,27 @@ let regexp = new RegExp(`<${tag}>`); // مانند /<h2>/ اگر در اعلان
5656
: حالت `dotall` را فعال می‌ کند، که به یک نقطه `.:pattern` اجازه می‌ دهد تا با کاراکتر خط جدید `n\` مطابقت داشته باشد (در فصل <info:regexp-character-classes> پوشش داده شده است).
5757

5858
`pattern:u`
59-
: پشتیبانی کامل از یونیکد را فعال می کند. پرچم پردازش صحیح جفت های جایگزین را امکان پذیر می کند. اطلاعات بیشتر در مورد آن در فصل <info:regexp-unicode>.
59+
: پشتیبانی کامل از یونیکد را فعال می کند. پرچم پردازش صحیح surrogate pair را امکان پذیر می کند. اطلاعات بیشتر در مورد آن در فصل <info:regexp-unicode>.
6060

6161
`pattern:y`
6262
: حالت `Sticky`: جستجو در موقعیت دقیق متن (در فصل <info:regexp-sticky> پوشش داده شده است)
6363

6464
```smart header="Colors"
65-
از اینجا به بعد رنگ بندی به این صورت است:
65+
از اینجا به بعد رنگ بندی درون متن آموزش به این صورت است:
6666
67-
- regexp -- `pattern:red`
68-
- string (where we search) -- `subject:blue`
69-
- result -- `match:green`
70-
```
67+
- regexp -- `pattern:red` (عبارت باقاعده خط قرمز دارد)
68+
- string (where we search) -- `subject:blue` (چیزی که جستجو می کنیم خط آبی دارد)
69+
- result -- `match:green` (نتیجه خط سبز دارد)
7170
7271
## جستجو: str.match
7372
7473
همانطور که قبلا ذکر شد، عبارات باقاعده با متدهای رشته ای ادغام می شوند.
7574
76-
متد `str.match(regexp)` همه مطابقت‌ های `regexp` را در رشته `str` پیدا می‌ کند.
75+
متد `str.match(regexp)` همه تطابق های `regexp` را در رشته `str` پیدا می‌ کند.
7776
7877
و دارای 3 حالت کار است:
7978
80-
1. اگر عبارت باقاعده دارای پرچم `pattern:g` باشد، آرایه‌ای از همه موارد مطابق را بر می‌ گرداند:
79+
1. اگر عبارت باقاعده دارای پرچم `pattern:g` باشد، آرایه‌ای از همه موارد مطابق با آن را بر می‌ گرداند:
8180
```js run
8281
let str = "We will, we will rock you";
8382
@@ -125,7 +124,7 @@ let regexp = new RegExp(`<${tag}>`); // مانند /<h2>/ اگر در اعلان
125124
126125
## جایگزین کردن: str.replace
127126
128-
روش `str.replace(regexp، replacement)` تطابق ‌هایی را که با استفاده از `regexp` در رشته `str` یافت می‌ شود را با `replacement` جایگزین می‌ کند (همه منطبق هستند اگر پرچم `pattern:g` وجود داشته باشد، در غیر این صورت، فقط اولین مورد است).
127+
روش `str.replace(regexp، replacement)` تطابق ‌هایی را که با استفاده از `regexp` در رشته `str` یافت می‌ شود را با `replacement` جایگزین می‌ کند (اگر پرچم `pattern:g` وجود داشته باشد همه منطبق هستند، در غیر این صورت، فقط اولین مورد تطابق دارد).
129128
130129
برای مثال:
131130
@@ -137,7 +136,7 @@ alert( "We will, we will".replace(/we/i, "I") ); // I will, we will
137136
alert( "We will, we will".replace(/we/ig, "I") ); // I will, I will
138137
```
139138

140-
آرگومان دوم رشته، `replacement(جایگزینی)` است. می‌ توانیم از ترکیب کاراکتر های ویژه در آن برای درج قطعاتی از تطابق استفاده کنیم:
139+
آرگومان دوم رشته `replacement(جایگزین)` است. می‌ توانیم از ترکیب کاراکترهای ویژه در آن برای درج قطعاتی از تطابق استفاده کنیم:
141140

142141
| نماد | عمل در رشته جایگزین |
143142
|--------|--------|
@@ -174,5 +173,5 @@ alert( regexp.test(str) ); // true
174173
- یک عبارت باقاعده از یک الگو و پرچم‌ های اختیاری تشکیل شده است: `pattern:g`، `pattern:i`، `pattern:m`، `pattern:u`، `pattern:s`، `pattern:y`.
175174
- بدون پرچم و نمادهای خاص (که بعداً مطالعه خواهیم کرد)، جستجو توسط regexp مانند جستجوی زیر رشته(substring) است.
176175
- متد `str.match(regexp)` به دنبال تطابق است: اگر پرچم `pattern:g` وجود داشته باشد، همه آنها را بر می گرداند، در غیر این صورت، فقط اولین مورد را بر می گرداند.
177-
- متد `str.replace(regexp، replacement)»` تطابق های یافت شده با استفاده از `regexp` را با `replacement` جایگزین می‌ کند: به همه آنها این فرایند را اعمال می کند اگر پرچم `pattern:g` وجود داشته باشد، در غیر این صورت فقط به اولین مورد اعمال می کند.
176+
- متد `str.replace(regexp، replacement)` تطابق های یافت شده با استفاده از `regexp` را با `replacement` جایگزین می‌ کند: اگر پرچم `pattern:g` وجود داشته باشد به همه آنها این فرایند را اعمال می کند، در غیر این صورت فقط به اولین مورد اعمال می کند.
178177
- متد `regexp.test(str)` اگر حداقل یک مورد مطابقت داشته باشد، `true` بر می‌ گرداند، در غیر این صورت، `false` بر می‌ گرداند.

0 commit comments

Comments
 (0)