RegExp Quantifiers

در عبارات منظم (RegExpQuantifiers یا "تکرارکننده‌ها" مشخص می‌کنن که یک کاراکتر یا گروه چند بار می‌تونه تکرار بشه.

🔹 پرکاربردترین Quantifiers

1. ? → صفر یا یک بار

console.log(/colou?r/.test("color")); // true console.log(/colou?r/.test("colour")); // true console.log(/colou?r/.test("colouur")); // false

2. * → صفر یا چند بار

console.log(/ab*c/.test("ac")); // true console.log(/ab*c/.test("abc")); // true console.log(/ab*c/.test("abbc")); // true

3. + → یک یا چند بار

console.log(/ab+c/.test("ac")); // false console.log(/ab+c/.test("abc")); // true console.log(/ab+c/.test("abbc")); // true

4. {n} → دقیقاً n بار

console.log(/a{3}/.test("aa")); // false console.log(/a{3}/.test("aaa")); // true

5. {n,} → حداقل n بار

console.log(/a{2,}/.test("a")); // false console.log(/a{2,}/.test("aa")); // true console.log(/a{2,}/.test("aaaa")); // true

6. {n,m} → بین n تا m بار

console.log(/a{2,4}/.test("a")); // false console.log(/a{2,4}/.test("aa")); // true console.log(/a{2,4}/.test("aaaa")); // true console.log(/a{2,4}/.test("aaaaa")); // false

🔹 Greedy vs Lazy Quantifiers

به طور پیش‌فرض، Quantifiers به صورت Greedy عمل می‌کنن (بیشترین مقدار ممکن رو می‌گیرن).
با اضافه کردن ? می‌تونیم اون‌ها رو Lazy کنیم (کمترین مقدار ممکن).

let text = "aaaa"; // Greedy console.log(text.match(/a+/)); // ["aaaa"] // Lazy console.log(text.match(/a+?/)); // ["a"]

✅ خلاصه

  • ? → صفر یا یک بار

  • * → صفر یا چند بار

  • + → یک یا چند بار

  • {n} → دقیقاً n بار

  • {n,} → حداقل n بار

  • {n,m} → بین n تا m بار

  • پیش‌فرض: Greedy، با ?Lazy