|
1 | | -# لنگرها: رشته شروع ^ و پایان $ |
| 1 | +# anchorها: شروع ^ رشته و پایان $ آن |
2 | 2 |
|
3 | | -کاراکترهای `pattern:^` و دلار `pattern:$` معنای خاصی در یک regexp دارند. به آنها "لنگر" می گویند. |
| 3 | +کاراکترهای `pattern:^` و `pattern:$` معنای خاصی در یک regexp دارند. به آنها "anchor" (به معنی لنگر) می گویند. |
4 | 4 |
|
5 | | -The caret `pattern:^` matches at the beginning of the text, and the dollar `pattern:$` -- at the end. |
6 | | -`pattern:^` در ابتدای متن و `pattern:$` دلاری -- در پایان متن مطابقت دارد. |
| 5 | +`pattern:^` در ابتدای متن و `pattern:$` در پایان متن مطابقت دارد. |
7 | 6 |
|
8 | 7 | به عنوان مثال، بیایید آزمایش کنیم که آیا متن با `Mary` شروع می شود یا خیر: |
9 | 8 | ```js run |
10 | 9 | let str1 = "Mary had a little lamb"; |
11 | | -alert( /^Mary/.test(str1) ); // درست |
| 10 | +alert( /^Mary/.test(str1) ); // true |
12 | 11 | ``` |
13 | 12 |
|
14 | | -الگوی `pattern:^Mary` به معنای "شروع رشته و سپس Mary" است. |
| 13 | +الگوی `pattern:^Mary` یعنی: "رشته شروع میشود و سپس کلمه Mary ظاهر میشود". |
15 | 14 |
|
16 | 15 | مشابه این، میتوانیم با استفاده از `pattern:snow$` آزمایش کنیم که آیا رشته به `snow` ختم میشود: |
17 | 16 |
|
18 | 17 | ```js run |
19 | 18 | let str1 = "its fleece was white as snow"; |
20 | | -alert( /snow$/.test(str1) ); // درست |
| 19 | +alert( /snow$/.test(str1) ); // true |
21 | 20 | ``` |
22 | 21 |
|
23 | | -در این موارد خاص، میتوانیم به جای آن از روشهای رشتهای `startsWith/endsWith` استفاده کنیم. برای تست های پیچیده تر باید از عبارات منظم استفاده شود. |
| 22 | +در این موارد خاص، میتوانیم به جای آن از متدهای مختص به رشتهها به نام `startsWith/endsWith` استفاده کنیم. برای تست های پیچیده تر باید از عبارات منظم استفاده شود. |
24 | 23 |
|
25 | | -## تست برای یک مسابقه کامل |
| 24 | +## آزمایش یک انطباق کامل |
26 | 25 |
|
27 | | -هر دو لنگر با هم `$...^:pattern` اغلب برای آزمایش اینکه آیا یک رشته کاملاً با الگو مطابقت دارد یا نه استفاده می شود. به عنوان مثال، برای بررسی اینکه آیا ورودی کاربر در قالب مناسب است یا خیر. |
| 26 | +هر دو anchor یعنی `$...^:pattern` با هم اغلب برای آزمایش اینکه آیا یک رشته کاملاً با الگو مطابقت دارد یا نه استفاده می شود. به عنوان مثال، برای بررسی اینکه آیا ورودی کاربر در قالب مناسب است یا خیر. |
28 | 27 |
|
29 | 28 | بیایید بررسی کنیم که آیا یک رشته زمان در قالب `12:34` است یا خیر. یعنی: دو رقم، سپس یک دونقطه، و سپس دو رقم دیگر. |
30 | 29 |
|
31 | | -در زبان عبارات معمولی `pattern:\d\d:\d\d` است: |
| 30 | +در زبان عبارات با قاعده به صورت `pattern:\d\d:\d\d` است: |
| 31 | + |
32 | 32 | ```js run |
33 | 33 | let goodInput = "12:34"; |
34 | 34 | let badInput = "12:345"; |
35 | 35 |
|
36 | 36 | let regexp = /^\d\d:\d\d$/; |
37 | | -alert( regexp.test(goodInput) ); // درست |
38 | | -alert( regexp.test(badInput) ); // نادرست |
| 37 | +alert( regexp.test(goodInput) ); // true |
| 38 | +alert( regexp.test(badInput) ); // false |
39 | 39 | ``` |
40 | 40 |
|
41 | | -در اینجا تطبیق `pattern:\d\d:\d\d` باید دقیقاً بعد از ابتدای متن `^:pattern` شروع شود و انتهای `$:pattern` باید بلافاصله دنبال شود. |
| 41 | +در اینجا تطبیق `pattern:\d\d:\d\d` باید دقیقاً بعد از ابتدای متن `^:pattern` شروع شود و انتهای `$:pattern` باید بلافاصله به دنبال آن بیاید. |
42 | 42 |
|
43 | | -کل رشته باید دقیقاً در این قالب باشد. اگر انحراف یا یک کاراکتر اضافی وجود داشته باشد، نتیجه `نادرست` است. |
| 43 | +کل رشته باید دقیقاً در این قالب باشد. اگر انحراف یا یک کاراکتر اضافی وجود داشته باشد، نتیجه `false` است. |
44 | 44 |
|
45 | | -اگر پرچم `pattern:m` وجود داشته باشد، لنگرها رفتار متفاوتی دارند. آن را در مقاله بعدی خواهیم دید. |
| 45 | +اگر پرچم `pattern:m` وجود داشته باشد، anchorها رفتار متفاوتی دارند. آن را در مقاله بعدی خواهیم دید. |
46 | 46 |
|
47 | 47 | ```smart header="Anchors have \"zero width\"" |
48 | | -لنگرهای `^:pattern` و `$:pattern` تست هستند. عرض آنها صفر است. |
| 48 | +anchorهای `^:pattern` و `$:pattern` تست هستند. عرض آنها صفر است. |
49 | 49 |
|
50 | 50 | به عبارت دیگر، آنها با یک کاراکتر مطابقت ندارند، بلکه موتور regexp را مجبور میکنند تا شرایط را بررسی کند (شروع/پایان متن). |
51 | 51 | ``` |
0 commit comments