$regexReplace (استبدال بالتعبير النمطي)

آخر تحديث: 2026-10-09

$regexReplace (استبدال بالتعبير النمطي)

يطابق $regexReplace نصًا بتعبير نمطي ويستبدله بسلسلة معينة — أداة متقدمة لتنظيف النصوص في خطوط الأنابيب. يمكن للبديل أن يشير إلى مجموعات الالتقاط عبر $1 و $2 لتدفقات استخراج-وإعادة-بناء. يدعم options علامات مثل i و m و x. على عكس $replaceAll (اللفظي فقط)، يعمل $regexReplace على الأنماط. طُوّر في MongoDB 4.4. المدخل الفارغ يُرجع null.

الفئةالنص
إصدار MongoDB1.0+
لغة المثالmongosh (الطرفية)

📝 الصيغة

{ $regexReplace: { input: <string-expression>, regex: <pattern>, replacement: <replacement>, options: <options> } }

⚙️ المعلمات

inputمطلوب؛ النص المراد معالجته.
regexمطلوب؛ نص نمط تعبير نمطي متوافق مع Perl.
replacementمطلوب؛ نص الاستبدال، حيث يشير ‏$1/$2 إلى مجموعات الالتقاط.
optionsأعلام اختيارية مثل i وm وx.

القيمة المرجعة:النص المستبدَل؛ null إذا كان الإدخال null.

▶ مثال

نفّذ الأوامر التالية في mongosh المحلي لديك (يتطلب تشغيل mongod):

// $regexReplace: إخفاء الأرقام الأربعة الوسطى من الهواتف
db.users.aggregate([
  { $project: { masked: { $regexReplace: { input: '$phone', regex: '(\\d{3})\\d{4}(\\d{4})', replacement: '$1****$2' } } } }
])

المخرجات:

{ "_id": 1, "masked": "138****8000" }
{ "_id": 2, "masked": "139****1234" }

📌 ملاحظات

مزيد من الحالات العملية قريبًا.

📚 دروس ذات صلة

❓ الأسئلة الشائعة

Qكيف أشير إلى مجموعات الالتقاط في البديل؟
Aاستخدم $1 و $2 بترتيب مجموعات الالتقاط.
Qماذا لو لم يتطابق شيء؟
Aتُعاد السلسلة المدخلة دون تغيير.
Qأيهما أختار، $regexReplace أم $replaceAll؟
Aالأنماط تحتاج $regexReplace؛ والاستبدالات اللفظية البسيطة أسرع بـ $replaceAll.
Web-Tutorial.com

فريق Web-Tutorial التقني

منصة دروس برمجية يديرها عدة مطورين. كل درس يتم كتابته ومراجعته بواسطة مطورين متخصصين في المجال. نعمل على ضمان دقة وموثوقية المحتوى — إذا لاحظت أي مشكلة، فيرجى إخبارنا.

100%