در حال بارگذاری...

عبارت‌های منظم

عبارت منظم الگویی است که روی متن اجرا می‌شود. /tea/ می‌پرسد آیا tea هست یا نه. replace رشتهٔ تازه‌ای می‌سازد که آنجا mint نشسته. یادداشت این صفحه Order: tea است و خطش true / Order: mint است.

این صفحهٔ نقشه نیست

صفحهٔ نقشه روی lida / mint / 2 تمام شد. آنجا ذخیره‌سازی بود. اینجا مهمان ذخیره نمی‌شود. یک رشته جست‌وجو می‌شود. جست‌وجوی ناموفق false یا null برمی‌گرداند و خطا پرتاب نمی‌کند.

test فقط بله یا خیر می‌گوید

/tea/.test("mint tea") برابر true است، چون الگو داخل متن نشسته. /tea/.test("lemon") برابر false است. پرچم i بزرگی و کوچکی را نادیده می‌گیرد، پس /tea/i با Tea جور است.

آیا یادداشت tea دارد

javascript
console.log(/tea/.test("mint tea"));
console.log(/tea/.test("lemon"));

لاگ‌ها true و بعد false هستند. نقطه هر یک نویسه را جز شکست خط جور می‌کند، پس /t.a/ هم با tea جور است. اگر خود نقطه را می‌خواهی باید \. بنویسی.

کل رشته، یا فقط یک تکه

^ یعنی ابتدا. $ یعنی انتها. /^tea$/ با tea جور است و mint tea را رد می‌کند. بدون این دو علامت، /tea/ داخل یادداشت بلندتر هم موفق می‌شود.

جور شدن با کل سفارش

javascript
console.log(/^tea$/.test("tea"));
console.log(/^tea$/.test("mint tea"));

لاگ‌ها true و بعد false هستند. mint tea آن حرف‌ها را دارد، ولی فقط tea نیست.

هر نسخه، بعد یک رشتهٔ تازه

match با پرچم g هر نسخه را برمی‌گرداند. replace با g هر نسخه را عوض می‌کند و رشتهٔ تازه می‌دهد. یادداشت اصلی همان می‌ماند تا نتیجه را در متغیری بگذاری.

هر دو را پیدا کن، بعد عوض کن

javascript
const note = "tea and tea";
console.log(note.match(/tea/g));
console.log(note.replace(/tea/g, "mint"));
console.log(note);

لاگ match آرایه‌ای از دو رشتهٔ tea است. لاگ replace برابر mint and mint است. لاگ سوم هنوز tea and tea است، چون replace خودش note را دست نزده. اگر g را برداری فقط اولین tea عوض می‌شود. اگر هیچ چیز جور نشود، match مقدار null برمی‌گرداند، نه آرایهٔ خالی.

چه چیزی پس می‌گیری

متد را از روی شکل جواب انتخاب کن.

📊 متدهای عبارت منظم

متد چه می‌دهد روی این یادداشت
/tea/.test(note) true یا false برای Order: tea مقدار true
note.match(/tea/) یک آرایه، یا null کلمهٔ tea و جایی که نشسته
note.match(/tea/g) همهٔ نسخه‌ها، یا null دو tea در tea and tea
note.replace(/tea/, "mint") یک رشتهٔ تازه Order: mint

test همان بله یا خیر است. match تکه‌ها را می‌دهد. replace متن بازنویسی‌شده را می‌دهد. اگر می‌خواهی نگه‌اش داری، آن متن را در متغیر بگذار.

خط صفحه

صفحه Order: tea را آزمایش می‌کند، نوشیدنی را عوض می‌کند، و هر دو نتیجه را می‌نویسد.

نمایش صفحه — test و replace

html
<!DOCTYPE html>
<html>
<body>
<p id="line">…</p>
<script>
const note = "Order: tea";
const found = /tea/.test(note);
const next = note.replace(/tea/, "mint");
document.querySelector("#line").textContent = found + " / " + next;
</script>
</body>
</html>

خط true / Order: mint است. خود note هنوز Order: tea است. lida / mint / 2 مال صفحهٔ نقشه بود.

پشت پیشخوان

  1. mint tea را با /tea/ آزمایش کن. نتیجه true است.
  2. lemon را با /tea/ آزمایش کن. نتیجه false است.
  3. mint tea را با /^tea$/ آزمایش کن. نتیجه false است.
  4. tea and tea را با /tea/g بگیر. طول آرایه 2 است.
  5. صفحه را بخوان. خط true / Order: mint است.

جاهایی که اشتباه می‌شود

الگو بدون ^ و $ یک تکه را می‌گیرد، نه کل یادداشت را. replace اصل را دست نمی‌زند.

  • خواندن null.length وقتی match چیزی پیدا نکرده
  • انتظار اینکه replace خود note را عوض کند
  • گذاشتن g روی الگویی که با test دوباره استفاده می‌کنی؛ آن الگو یادش می‌ماند کجا ایستاده
  • فراموش کردن \. وقتی نقطهٔ واقعی می‌خواهی
  • خواندن خط به‌شکل lida / mint / 2

این‌ها را نگه دار

  • /tea/.test جواب true یا false می‌دهد
  • /^tea$/ فقط رشتهٔ کامل tea را می‌پذیرد
  • match با g هر نسخه را فهرست می‌کند، یا null برمی‌گرداند
  • replace رشتهٔ تازه برمی‌گرداند
  • خط صفحه true / Order: mint است

🧠 دانش خود را بیازمایید

آماده شروع

دانش خود را بیازمایید

خود را با این آزمون تعاملی به چالش بکشید و ببینید موضوع را چقدر خوب درک کرده‌اید

❓
5
سوالات
🎯
70%
برای قبولی
♾️
∞
زمان
🔄
∞
تلاش‌ها

📝 دستورالعمل‌ها

  • هر سوال را با دقت بخوانید
  • بهترین پاسخ را برای هر سوال انتخاب کنید
  • می‌توانید آزمون را هر چند بار که می‌خواهید تکرار کنید
  • پیشرفت شما در بالا نمایش داده می‌شود