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

للمقارنة باستخدام تعبير عادي، تحتاج إلى تعيين نوع المطابقة إلى "مطابقة التعبير العادي".

يجب كتابة التعبيرات العادية في المشغل نفسه، وليس في المتغيرات المستخدمة للمطابقة!

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

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

^(\+)?((\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])
    تحديث. التحقق من صحة التاريخ بشكل أكثر صرامة:
    (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+
  • تحديث. البريد الإلكتروني:
    ^[-\w.]+@([A-z0-9][-A-z0-9]+\.)+[A-z]{2,4}$
  • تحديث. URL
    ~^(?:(?: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
  • تحديث. الوقت بتنسيق HH:MM:SS:
    ^([0-1]\d|2[0-3])(:[0-5]\d){2}$
  • تحديث. عنوان Mac:
    ([0-9a-fA-F]{2}([:-]|$)){6}$|([0-9a-fA-F]{4}([.]|$)){3}

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

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