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/01-regexp-introduction/article.md
+18-19Lines changed: 18 additions & 19 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,11 +2,11 @@
2
2
3
3
عبارات باقاعده (Regular expressions) الگوهایی هستند که روشی قدرتمند برای جستجو و جایگزینی در متن ارائه می دهند.
4
4
5
-
در جاوا اسکریپت، آنها از طریق شیء [RegExp](mdn:js/RegExp) استفاده می شوند و همچنین به خوبی با متد های رشته ها ادغام می شوند.
5
+
در جاوااسکریپت، آنها از طریق شیء [RegExp](mdn:js/RegExp) استفاده می شوند و همچنین به خوبی با متد های رشته ها ادغام می شوند.
6
6
7
7
## عبارات باقاعده (Regular Expressions)
8
8
9
-
عبارت باقاعده (همچنین "regexp"، یا فقط "reg") از یک *الگو(pattern)* و *پرچم(flags)* های اختیاری تشکیل می شوند.
9
+
عبارت باقاعده (همچنین "regexp"، یا فقط "reg") از یک *الگو(pattern)* و *پرچم های(flags)* اختیاری تشکیل می شوند.
10
10
11
11
دو روش وجود دارد که می توان از آنها برای ایجاد یک شیء عبارت باقاعده استفاده کرد.
12
12
@@ -20,21 +20,21 @@ regexp = new RegExp("pattern(الگو)", "flags(پرچم)");
20
20
21
21
```js
22
22
regexp =/pattern/; // بدون پرچم
23
-
regexp =/pattern/gmi; //با پرچم g, m, i (به زودی پوشش داده می شود)
23
+
regexp =/pattern/gmi; //(به زودی گفته میشود) i، m، g با پرچم
24
24
```
25
25
26
26
اسلش های `pattern:/.../` به جاوا اسکریپت می گوید که ما در حال ایجاد یک عبارت باقاعده هستیم. آنها همان نقش کوتیشن(') را برای رشته ها بازی می کنند.
27
27
28
-
در هر دو مورد، `regexp` به یک نمونه از کلاس داخلی `RegExp` تبدیل می شود.
28
+
در هر دو مورد، `regexp` به یک نمونه از کلاس درونساخت`RegExp` تبدیل می شود.
29
29
30
-
تفاوت اصلی بین این دو سینتکس این است که الگو با استفاده از اسلشهای `/.../`، اجازه درج عبارات را نمی دهد (مانند حروف الفبای قالب(template literals) رشته با `${...}`). که آنها کاملا ساکن هستند.
30
+
تفاوت اصلی بین این دو سینتکس این است که الگو با استفاده از اسلشهای `/.../`، اجازه درج عبارات را نمی دهد (مانند حروف الفبای قالب(template literals) رشته با `${...}`). آنها کاملا ایستا هستند.
31
31
32
-
اسلش ها زمانی استفاده می شوند که عبارت باقاعده را در زمان نوشتن کد بدانیم -- و این رایج ترین حالت است. در حالی که `new RegExp` بیشتر زمانی استفاده می شود که ما نیاز به ایجاد یک regexp "در حال پرواز" از یک رشته تولید شده به صورت پویا داشته باشیم. برای مثال:
32
+
اسلش ها زمانی استفاده می شوند که عبارت باقاعده را در زمان نوشتن کد بدانیم -- و این رایج ترین حالت است. در حالی که `new RegExp` بیشتر زمانی استفاده می شود که ما "در حین انجام کار" نیاز به ایجاد یک regexp از یک رشته که به صورت پویا تولید شده داشته باشیم. برای مثال:
33
33
34
34
```js
35
-
let tag =prompt("چه بر چسبی می خواهید پیدا کنید؟", "h2");
35
+
let tag =prompt("کدام تگ HTML را می خواهید پیدا کنید؟", "h2");
36
36
37
-
let regexp =newRegExp(`<${tag}>`); //مانند /<h2>/ اگر در اعلان بالا "h2" پاسخ داده شود
37
+
let regexp =newRegExp(`<${tag}>`); //خواهد بود /<h2>/ جواب داده شود درست مانند "h2" اگر در اعلان بالا
38
38
```
39
39
40
40
## پرچم ها (Flags)
@@ -56,28 +56,27 @@ let regexp = new RegExp(`<${tag}>`); // مانند /<h2>/ اگر در اعلان
56
56
: حالت `dotall` را فعال می کند، که به یک نقطه `.:pattern` اجازه می دهد تا با کاراکتر خط جدید `n\` مطابقت داشته باشد (در فصل <info:regexp-character-classes> پوشش داده شده است).
57
57
58
58
`pattern:u`
59
-
: پشتیبانی کامل از یونیکد را فعال می کند. پرچم پردازش صحیح جفت های جایگزین را امکان پذیر می کند. اطلاعات بیشتر در مورد آن در فصل <info:regexp-unicode>.
59
+
: پشتیبانی کامل از یونیکد را فعال می کند. پرچم پردازش صحیح surrogate pair را امکان پذیر می کند. اطلاعات بیشتر در مورد آن در فصل <info:regexp-unicode>.
60
60
61
61
`pattern:y`
62
62
: حالت `Sticky`: جستجو در موقعیت دقیق متن (در فصل <info:regexp-sticky> پوشش داده شده است)
63
63
64
64
```smart header="Colors"
65
-
از اینجا به بعد رنگ بندی به این صورت است:
65
+
از اینجا به بعد رنگ بندی درون متن آموزش به این صورت است:
66
66
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` (نتیجه خط سبز دارد)
71
70
72
71
## جستجو: str.match
73
72
74
73
همانطور که قبلا ذکر شد، عبارات باقاعده با متدهای رشته ای ادغام می شوند.
75
74
76
-
متد `str.match(regexp)` همه مطابقت های `regexp` را در رشته `str` پیدا می کند.
75
+
متد `str.match(regexp)` همه تطابق های `regexp` را در رشته `str` پیدا می کند.
77
76
78
77
و دارای 3 حالت کار است:
79
78
80
-
1. اگر عبارت باقاعده دارای پرچم `pattern:g` باشد، آرایهای از همه موارد مطابق را بر می گرداند:
79
+
1. اگر عبارت باقاعده دارای پرچم `pattern:g` باشد، آرایهای از همه موارد مطابق با آن را بر می گرداند:
81
80
```js run
82
81
let str = "We will, we will rock you";
83
82
@@ -125,7 +124,7 @@ let regexp = new RegExp(`<${tag}>`); // مانند /<h2>/ اگر در اعلان
125
124
126
125
## جایگزین کردن: str.replace
127
126
128
-
روش `str.replace(regexp، replacement)` تطابق هایی را که با استفاده از `regexp` در رشته `str` یافت می شود را با `replacement` جایگزین می کند (همه منطبق هستند اگر پرچم `pattern:g` وجود داشته باشد، در غیر این صورت، فقط اولین مورد است).
127
+
روش `str.replace(regexp، replacement)` تطابق هایی را که با استفاده از `regexp` در رشته `str` یافت می شود را با `replacement` جایگزین می کند (اگر پرچم `pattern:g` وجود داشته باشد همه منطبق هستند، در غیر این صورت، فقط اولین مورد تطابق دارد).
129
128
130
129
برای مثال:
131
130
@@ -137,7 +136,7 @@ alert( "We will, we will".replace(/we/i, "I") ); // I will, we will
137
136
alert( "We will, we will".replace(/we/ig, "I") ); // I will, I will
138
137
```
139
138
140
-
آرگومان دوم رشته،`replacement(جایگزینی)` است. می توانیم از ترکیب کاراکتر های ویژه در آن برای درج قطعاتی از تطابق استفاده کنیم:
139
+
آرگومان دوم رشته `replacement(جایگزین)` است. می توانیم از ترکیب کاراکترهای ویژه در آن برای درج قطعاتی از تطابق استفاده کنیم:
- یک عبارت باقاعده از یک الگو و پرچم های اختیاری تشکیل شده است: `pattern:g`، `pattern:i`، `pattern:m`، `pattern:u`، `pattern:s`، `pattern:y`.
175
174
- بدون پرچم و نمادهای خاص (که بعداً مطالعه خواهیم کرد)، جستجو توسط regexp مانند جستجوی زیر رشته(substring) است.
176
175
- متد `str.match(regexp)` به دنبال تطابق است: اگر پرچم `pattern:g` وجود داشته باشد، همه آنها را بر می گرداند، در غیر این صورت، فقط اولین مورد را بر می گرداند.
177
-
- متد `str.replace(regexp، replacement)»` تطابق های یافت شده با استفاده از `regexp` را با `replacement` جایگزین می کند: به همه آنها این فرایند را اعمال می کند اگر پرچم `pattern:g` وجود داشته باشد، در غیر این صورت فقط به اولین مورد اعمال می کند.
176
+
- متد `str.replace(regexp، replacement)` تطابق های یافت شده با استفاده از `regexp` را با `replacement` جایگزین می کند: اگر پرچم `pattern:g` وجود داشته باشد به همه آنها این فرایند را اعمال می کند، در غیر این صورت فقط به اولین مورد اعمال می کند.
178
177
- متد `regexp.test(str)` اگر حداقل یک مورد مطابقت داشته باشد، `true` بر می گرداند، در غیر این صورت، `false` بر می گرداند.
0 commit comments