# التعبيرات النمطية

العبارات النمطية هي أنماط تسمح للروبوت بالتحقق من تنسيق إدخال المستخدم — على سبيل المثال، للتأكد من أن الإدخال هو رقم هاتف وليس شيئًا آخر.

<div data-with-frame="true"><figure><img src="/files/385d543ef4935a40a7bddbdf47deeddcb1067bee" alt="" width="563"><figcaption></figcaption></figure></div>

{% hint style="warning" %}
للمقارنة باستخدام عبارة نمطية، تحتاج إلى تعيين نوع المطابقة إلى "مطابقة RegEx".
{% endhint %}

{% hint style="info" %}
يجب كتابة العبارات النمطية في المُشغِّل نفسه، وليس في المتغيرات المستخدمة للمطابقة!
{% endhint %}

عند جمع البيانات، غالبًا ما يُدخل المستخدمون شيئًا غير ما يُطلب منهم. إليك تدفق نموذجي للتحقق من صحة إدخال رقم هاتف. إذا لم يُدخل المستخدم رقم هاتف صالحًا، فسيطلب منه الروبوت المحاولة مرة أخرى.

<div data-with-frame="true"><figure><img src="/files/18b28c597a5036ae250361b913159b1db2a8b884" alt="" width="563"><figcaption></figcaption></figure></div>

تحتوي كتلة إدخال رقم الهاتف على اتصالين صادرين: أحدهما بدون أي مُشغِّل، والآخر مع مُشغِّل يستخدم عبارة نمطية لمطابقة رقم هاتف.

^(\\+)?((\d{2,3}) ?\d|\d)((\[ -]?\d)|( ?(\d{2,3}) ?)){5,12}\d$

يستخدم هذا التدفق اتصالين للتعامل مع التحقق من صحة رقم الهاتف:

1. **الاتصال الأساسي (رقم صالح)**
   * **المُشغِّل:** رقم هاتف مُنسَّق بشكل صحيح.
   * **الإجراء:** يضيف الرقم إلى التطبيق ويتابع.
2. **اتصال بديل (إدخال غير صالح)**
   * **الأولوية:** أقل من الاتصال الأساسي.
   * **المُشغِّل:** أي إدخال لا يُعد رقم هاتف صالحًا.
   * **الإجراء:** يُبلغ المستخدم بالخطأ ويعيد توجيهه للمحاولة مرة أخرى.

يضمن ذلك أن يتقدم المستخدم فقط بعد تقديم بيانات صالحة، مع تلقيه ملاحظات فورية حول أي أخطاء.

## قائمة بالعبارات النمطية المفيدة:

* **إدخال رقمي: أرقام فقط تبدأ بـ 1:**\
  ^\[1-9]+\[0-9]\*$
* **إدخال رقمي: أرقام فقط تبدأ بـ 0:**\
  ^\[0-9]+\[0-9]\*$
* **رقم بطاقة الائتمان:**\
  \[0-9]{13,16}
* **رقم هاتف عام:**\
  ^(\\+)?((\d{2,3}) ?\d|\d)((\[ -]?\d)|( ?(\d{2,3}) ?)){5,12}\d$
* **حروف وأرقام** (لاتيني):\
  ^\[a-zA-Z0-9]+$
* **نطاق** (مثل abcd.com):\
  ^(\[a-zA-Z0-9]\(\[a-zA-Z0-9\\-]{0,61}\[a-zA-Z0-9])?\\.)+\[a-zA-Z]{2,6}$
* **URL** (مثل abcd.com):\
  (https?):((//)|(\\\\\\\\))+\[\w\d:#@%/;$()\~\_?\\+-=\\\\\\.&]\*
* **IPv4:**\
  ((25\[0-5]|2\[0-4]\d|\[01]?\d\d?)\\.){3}(25\[0-5]|2\[0-4]\d|\[01]?\d\d?)
* **IPv6:**\
  ((^|:)(\[0-9a-fA-F]{0,4})){1,8}$
* **اسم المستخدم** (بحد أقصى من 2 إلى 20 حرفًا، يمكن أن تكون حروفًا وأرقامًا، ويجب أن يكون الحرف الأول حرفًا):\
  ^\[a-zA-Z]\[a-zA-Z0-9-\_\\.]{1,20}$
* **كلمة المرور** (حروف لاتينية صغيرة وكبيرة، أرقام):\
  ^(?=.\*\d)(?=.\*\[a-z])(?=.\*\[A-Z])(?!.\*\s).\*$
* **كلمة مرور قوية** (أحرف كبيرة وصغيرة، أرقام/رموز خاصة، بحد أدنى 8 أحرف):\
  (?=^.{8,}$)((?=.\*\d)|(?=.\*\W+))(?!\[.\n])(?=.\*\[A-Z])(?=.\*\[a-z]).\*$
* **تاريخ بصيغة YYYY-MM-DD:**\
  \[0-9]{4}-(0\[1-9]|1\[012])-(0\[1-9]|1\[0-9]|2\[0-9]|3\[01])\
  **UPD.** التحقق الأكثر صرامة من التاريخ:\
  (19|20)\d\d-((0\[1-9]|1\[012])-(0\[1-9]|\[12]\d)|(0\[13-9]|1\[012])-30|(0\[13578]|1\[02])-31)
* **تاريخ بصيغة DD/MM/YYYY:**\
  (0\[1-9]|\[12]\[0-9]|3\[01])\[- /.]\(0\[1-9]|1\[012])\[- /.]\(19|20)\d\d
* **تاريخ بصيغة DD.MM.YYYY:**\
  (0\[1-9]|\[12]\[0-9]|3\[01])\[.]\(0\[1-9]|1\[012])\[.]\(19|20)\d\d
* ع**داد صحيحة وأعداد عشرية** (النقطة كفاصل عشري)\
  \\-?\d+(\\.\d{0,})?
* **UUID**:\
  ^\[0-9A-Fa-f]{8}\\-\[0-9A-Fa-f]{4}\\-\[0-9A-Fa-f]{4}\\-\[0-9A-Fa-f]{4}\\-\[0-9A-Fa-f]{12}$
* **خط العرض أو خط الطول:**\
  -?\d{1,3}\\.\d+
* **UPD. البريد الإلكتروني**:\
  ^\[-\w.]+@(\[A-z0-9]\[-A-z0-9]+\\.)+\[A-z]{2,4}$
* <mark style="color:red;">**UPD. الرابط**</mark> \
  \~^(?:(?:https?|ftp|telnet)://(?:\[a-z0-9\_-]{1,32}(?::\[a-z0-9\_-]{1,32})?@)?)?(?:(?:\[a-z0-9-]{1,128}\\.)+(?:ru|su|com|net|org|mil|edu|arpa|gov|biz|info|aero|inc|name|\[a-z]{2})|(?!0)(?:(?!0\[^.]|255)\[0-9]{1,3}\\.){3}(?!0|255)\[0-9]{1,3})(?:/\[a-z0-9.,\_@%&?+=\\\~/-]\*)?(?:#\[^ '\\"&]\*)?$\~i
* **UPD. الوقت بصيغة HH:MM:SS**: التنسيق\
  ^(\[0-1]\d|2\[0-3])(:\[0-5]\d){2}$
* **UPD. عنوان MAC**:\
  (\[0-9a-fA-F]{2}(\[:-]|$)){6}$|(\[0-9a-fA-F]{4}(\[.]|$)){3}

توجد كمية كبيرة من العبارات النمطية المتاحة. إذا لم تجد ما تحتاجه في هذه القائمة، فمن الجيد استخدام محرك بحث.

يمكنك اختبار العبارات النمطية بسهولة على مواقع مثل: <https://regex101.com/>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.mavibot.ai/doc/ar/chatbot/functions/regex.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
