x

الفصول الرئيسية

  1. LimeSurvey Cloud مقابل LimeSurvey CE
  2. دليل البدء السريع - LimeSurvey 3.0+
  3. التثبيت - LimeSurvey CE
  4. كيفية تصميم استبيان جيد (دليل)
  5. البدء
  6. إدارة LimeSurvey
  7. الاستبيانات - مقدمة
  8. إعدادات الاستبيان
  9. قائمة المسح
  10. هيكل المسح
  11. الأسئلة - مقدمة
  12. مجموعات الأسئلة - مقدمة
  13. المسوحات - الإدارة
  14. خيارات شريط أدوات الاستبيان
  15. استبيان متعدد اللغات
  16. محرك ExpressionScript - دليل البدء السريع
  17. غير مصنفة والميزات المتقدمة
  18. الأسئلة الشائعة العامة
  19. استكشاف الأخطاء وإصلاحها
  20. حلول بديلة
  21. الترخيص
  22. سجل تغييرات الإصدارات
  23. البرامج المساعدة
 Actions

استخدام التعبيرات المنتظمة

From LimeSurvey Manual

ربما تُرجمت هذه الصفحة آليًا وقد تحتوي على أخطاء. عرض الأصل الإنجليزي · تحسين هذه الترجمة
This page is a translated version of the page Using regular expressions and the translation is 100% complete.

يجب أن تبدأ التعبيرات المنتظمة وتنتهي بشرطة مائلة للأمام ("/"). يمكنك العثور على مكتبة جيدة من التعبيرات المنتظمة على الموقع https://www.regexlib.net/. ستعمل هذه الأنماط في الغالب دائمًا إذا وُضعت بين شرطتين مائلتين للأمام.

لاختبار التعبير المنتظم الخاص بك، يمكنك استخدام أداة اختبار التعبيرات المنتظمة هذه.

لتحسين هذا القسم من الويكي، نرجو منك إضافة التعبيرات المنتظمة التي اختبرتها بنجاح، لتوفير فهم أفضل لهذه الميزة لمستخدمي LimeSurvey الجدد (المحتملين).
  تنبيه : يرجى ملاحظة أن جميع الأمثلة أدناه مكتوبة في سطر واحد!



هام: التعبيرات المنتظمة في الشروط

لاحظ أنه عند استخدام التعبيرات المنتظمة في محرر الشروط، يجب عدم تضمين الشرطة المائلة في البداية والنهاية.


التحقق من صحة البريد الإلكتروني

تحديث (12/2018): نظرًا لأن أسماء النطاقات لم تعد تحتوي على أحرف خاصة مثل "ü" فحسب، بل أصبحت تستخدم أيضًا أكثر من 3 أحرف مثل .tech أو .company، فإن التعبير المنتظم للبريد الإلكتروني أدناه يتحقق فقط من وجود "@" و "." داخل عنوان البريد الإلكتروني المُدخل.

/^.+?@.+?\..+$/

إذا كنت ترغب في التحقق من صحة عنوان واحد في كل سطر، في حقل نص طويل متعدد الأسطر:

/^(((\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*(\r\n)?\n?)+)*)$/

في هذا التعبير المنتظم القديم، يقتصر اسم النطاق على 3 أحرف، مما لا يغطي جميع النطاقات المتاحة:

/^(\w[-._+\w]*\w@\w[-._\w]*\w\.\w{2,3})$/

الرموز البريدية

الرموز البريدية الأسترالية:

/^[0-9]{4}/

الرموز البريدية البرازيلية

/^[0-9]{2}\.[0-9]{3}-[0-9]{3}$/

الرموز البريدية الكندية

/^[a-zA-Z]\d{1}[a-zA-Z](\-| |)\d{1}[a-zA-Z]\d{1}$/

الرموز البريدية الأمريكية

/^[0-9]{5}([- /]?[0-9]{4})?$/

لكي يبدأ الرمز البريدي بصفر، استخدم:

/^[0-9]{5}(?:-[0-9]{4})?$/

الرموز البريدية البريطانية

/^[A-Z][A-Z]?[0-9][A-Z0-9]? ?[0-9][ABDEFGHJLNPQRSTUWXYZ]{2}$/i

لاحظ أن هذا ليس دقيقًا جدًا، وأن التحقق الأكثر دقة أكثر تعقيدًا بكثير. على سبيل المثال، راجع إجابة StackOverflow وWikipedia لمزيد من المعلومات.

الرموز البريدية الفرنسية

/(^[0-8]\d\d{3}$)|(^9[0-5]\d{3}$)|(^97[1-6]\d{2}$)|(^98[46-8]\d{2}$)/

التعبير أعلاه دقيق جدًا، وسيتحقق مما إذا كانت المقاطعة الفرنسية موجودة أم لا (الرقمان الأولان)، بما في ذلك مقاطعات وأقاليم ما وراء البحار (DOM-TOM).


أرقام الهواتف

أرقام الهواتف الأمريكية

/^(?:\([2-9]\d{2}\)\ ?|[2-9]\d{2}(?:\-?|\ ?))[2-9]\d{2}[- ]?\d{4}$/

أو

/^[\(\)\.\- ]{0,}[0-9]{3}[\(\)\.\- ]{0,}[0-9]{3}[\(\)\.\- ]{0,}[0-9]{4}[\(\)\.\- ]{0,}$/

سيطابق هذا الخيار الثاني جميع أرقام الهواتف الكندية والأمريكية التي تتضمن رموزًا غير رقمية، بما في ذلك:

 . ( ) - (space)

سيتيح لك هذا مطابقة أرقام الهواتف التي تشبه ما يلي:

  • (555)555 5555
  • 555.555.5555
  • 555 555 5555
  • (555)-555-5555
  • 555-555-5555
  • 555555555

أرقام الهواتف الأسترالية

تطابق الأنماط التالية جميع أرقام الهواتف المحمولة والأرضية الأسترالية المختلفة، بما في ذلك الأرقام ذات بادئة الدولة "+61":

  • (02) 9123 6535
  • 03 1234-5345
  • 0412 345 678
  • +61 2 3456 789

ولكن لا تطابق:

  • 234 3450 234
  • a234 534 3432
  • 134567
  • 123456789013

يتم تجاهل الأقواس والمسافات البيضاء والواصلات.

تطابق الإصدارات المسماة 'دقيق جدًا:' المدرجة هنا أول أربعة أو خمسة أرقام من الرقم للتأكد من أنها أرقام أسترالية صالحة.

تطابق الإصدارات المسماة 'غير دقيق جدًا:' الرقم الأول والثاني فقط، لذلك قد تسمح بأرقام غير صالحة.

جميع أرقام الهواتف الأسترالية (المحمول والأرضي - رمز المنطقة مطلوب)

دقيق جدًا:

/^\(?(?:\+?61|0)(?:(?:2\)?[ -]?(?:3[ -]?[38]|[46-9][ -]?[0-9]|5[ -]?[0-35-9])|3\)?(?:4[ -]?[0-57-9]|[57-9][ -]?[0-9]|6[ -]?[1-67])|7\)?[ -]?(?:[2-4][ -]?[0-9]|5[ -]?[2-7]|7[ -]?6)|8\)?[ -]?(?:5[ -]?[1-4]|6[ -]?[0-8]|[7-9][ -]?[0-9]))(?:[ -]?[0-9]){6}|4\)?[ -]?(?:(?:[01][ -]?[0-9]|2[ -]?[0-57-9]|3[ -]?[1-9]|4[ -]?[7-9]|5[ -]?[018])[ -]?[0-9]|3[ -]?0[ -]?[0-5])(?:[ -]?[0-9]){5})$/

غير دقيق جدًا:

/^(?:\+?61|0)[2-478](?:[ -]?[0-9]){8}$/

جميع أرقام الهواتف الأسترالية (الهواتف الأرضية فقط - رمز المنطقة مطلوب)

دقيق جدًا:

/^\(?(?:\+?61|0)(?:2\)?[ -]?(?:3[ -]?[38]|[46-9][ -]?[0-9]|5[ -]?[0-35-9])|3\)?(?:4[ -]?[0-57-9]|[57-9][ -]?[0-9]|6[ -]?[1-67])|7\)?[ -]?(?:[2-4][ -]?[0-9]|5[ -]?[2-7]|7[ -]?6)|8\)?[ -]?(?:5[ -]?[1-4]|6[ -]?[0-8]|[7-9][ -]?[0-9]))(?:[ -]?[0-9]){6}$/

غير دقيق جدًا:

/^(?:\+?61|\(?0)[2378]\)?(?:[ -]?[0-9]){8}$/

أرقام الهواتف الأرضية في نيو ساوث ويلز (رمز المنطقة اختياري)

دقيق جدًا:

/^(?:\(?(?:\+?61|0)2\)?[ -]?)?(?:3[ -]?[38]|[46-9][ -]?[0-9]|5[ -]?[0-35-9])(?:[ -]?[0-9]){6}$/

غير دقيق جدًا:

/^(?:\(?(?:\+?61|0)2\)?(?:[ -]?[0-9]){7}[0-9]$/

أرقام الهواتف الأرضية في فيكتوريا وتasmانيا (رمز المنطقة اختياري)

دقيق جدًا:

/^(?:\(?(?:\+?61|0)3\)?[ -]?)?(?:4[ -]?[0-57-9]|[57-9][ -]?[0-9]|6[ -]?[1-67])(?:[ -]?[0-9]){6}$/

غير دقيق جدًا:

/^(?:\(?(?:\+?61|0)3\)?(?:[ -]?[0-9]){7}[0-9]$/

أرقام الهواتف الأرضية في كوينزلاند (رمز المنطقة اختياري)

دقيق جدًا:

/^(?:\(?(?:\+?61|0)7\)?[ -]?)?(?:[2-4][ -]?[0-9]|5[ -]?[2-7]|7[ -]?6)(?:[ -]?[0-9]){6}$/

غير دقيق جدًا:

/^(?:\(?(?:\+?61|0)7\)?(?:[ -]?[0-9]){7}[0-9]$/

أرقام الهواتف الأرضية في جنوب أستراليا والإقليم الشمالي وغرب أستراليا (رمز المنطقة اختياري)

دقيق جدًا:

/^(?:\(?(?:\+?61|0)8\)?[ -]?)?(?:5[1-4]|6[0-8]|[7-9][0-9])$/

غير دقيق جدًا:

/^(?:\(?(?:\+?61|0)8\)?(?:[ -]?[0-9]){7}[0-9]$/

أرقام الهواتف المحمولة الأسترالية فقط

دقيق جدًا:

/^(?:\+?61|0)4 ?(?:(?:[01] ?[0-9]|2 ?[0-57-9]|3 ?[1-9]|4 ?[7-9]|5 ?[018]) ?[0-9]|3 ?0 ?[0-5])(?: ?[0-9]){5}$/

غير دقيق جدًا:

/^(?:\(?(?:\+?61|0)4\)?(?:[ -]?[0-9]){7}[0-9]$/

رقم هاتف بلجيكي

/^((\+|00)32\s?|0)(\d\s?\d{3}|\d{2}\s?\d{2})(\s?\d{2}){2}$/

رقم هاتف محمول بلجيكي

/^((\+|00)32\s?|0)4(60|[789]\d)(\s?\d{2}){3}$/

رقم هاتف فرنسي

/^((\+|00)33\s?|0)[1-59](\s?\d{2}){4}$/

رقم هاتف محمول فرنسي

/^((\+|00)33\s?|0)[67](\s?\d{2}){4}$/

رقم هاتف لوكسمبورغي

/^((\+|00\s?)352)?(\s?\d{2}){3,4}$/

رقم هاتف محمول لوكسمبورغي

/^((\+|00\s?)352)?\s?6[269]1(\s?\d{3}){2}$/

الدرجات الألمانية (مع علامة زائد أو ناقص اختيارية)

/^[1-6]{1}[\+|\-]?$/


التحقق من صحة العمر

مثال: العمر 20-99

/([2-9][0-9])/

مثال: العمر 18-35

/(1[8-9]|2[0-9]|3[0-5])/

مثال: العمر 19-65

/^(1[8-9]|[2-5][0-9]|6[0-5])$/


التحقق من صحة الأرقام

الأرقام من 1 إلى 99999

/^([1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9])$/
/^[1-9][0-9]{0,4}$/ does the same as above but should run a little faster

الأرقام من 1 إلى 999، ومن 1.000 إلى 999.999 إلى 999.999.999

/^[1-9][0-9]{0,2}(?:\.[0-9]{3}){0,2}$/

يقبل الأرقام من 1 إلى 999، ومن 1.000 إلى 999.999 إلى 999.999.999 لكنه يرفض أرقامًا مثل 999.1.1 و94.22.22 و999.1.22 و999.11.1 و999.1.333

التحقق من الأرقام مع كسر عشري اختياري (للأسعار)

يقبل الأرقام من 0 إلى 199، مع خانتين عشريتين اختياريتين:

/^([1][0-9][0-9]|[1-9][0-9]|[0-9])((\.)[0-9][0-9])?$/

التحقق من الأرقام مع فاصل الآلاف

المسافة كفاصل، بدون إشارة سالب

/^(?!0)\d{1,3}(\ \d{3})*$/

النقطة كفاصل، مع السماح بإشارة السالب

/^-?(?!0)\d{1,3}(\.\d{3})*$/

يفرض هذا التعبير وجود خانتين عشريتين ويقبل الأرقام من 1.00 إلى 999,999,999.00 مع فاصلة اختيارية للفصل بين الآلاف/الملايين، بما في ذلك جميع الأمثلة التالية: 1.00، 1,000.00، 12,345.67، 12345,02، 123,456,468.00، 1234566.00، 123456789.00 لكنه لا يقبل 1,23.00 أو 12,3.4 أو 1234,43.04

/^[1-9][0-9]{0,2}(?:,?[0-9]{3}){0,3}\.[0-9]{2}$/

مشابه لما سبق: يفرض خانتين عشريتين لكنه يقبل "0" قبل الفاصل العشري ",".

/[0-9]{0,2}(?:,?[0-9]{3}){0,3}\.[0-9]{2}$/

مثل السابق، لكن الخانتان العشريتان اختياريتان:

/^[1-9][0-9]{0,2}(?:,?[0-9]{3}){0,3}(?:\.[0-9]{2})?$/

الشهر (1-12)

إذا أردت أن تسأل عن الشهر الذي وُلد فيه الشخص، فيمكنك التحقق من صحة المدخلات كما يلي:

/^[0]*[1-9]$|^[0]*1[0-2]$/

الحد الأدنى للعرض (يُضبط على 3 في هذا المثال)

/^.{3,}$/


العملة

العملة الأمريكية (علامة الدولار والسنتات اختيارية)

/^\$?\d+(\.(\d{2}))?$/

للتحقق من استخدام الفاصلة:

/^\$?\d{1,3}(\d+(?!,))?(,\d{3})*(\.\d{2})?$/

السعر السويسري

رقم يحتوي على خانتين عشريتين بعد الفاصلة العشرية، على أن تكون الأخيرة منهما إما 5 أو 0:

/^(\d+)(\.\d(05)?)?$/


التحقق من الدرجة

1-10

/^[1-9]{1}$|^10$/

1-100

/^[1-9]?[0-9]{1}$|^100$/


التحقق من النص

لا يدعم نوع السؤال نص قصير مركب/ مزدوج حاليًا الحد الأدنى أو الحد الأقصى للإجابات. إحدى الطرق للالتفاف على ذلك هي استخدام نوع السؤال نص حر طويل مع التعبير المنتظم.

يختبر التعبير التالي وجود كلمة واحدة على الأقل في كل سطر، بحد أدنى 3 أسطر وبحد أقصى 10 أسطر:

/(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+)*)(?:[,.;:?!& \n\r]?(?:\n|\r|\n\r|\r\n)(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+)*)){2,10}/is

إذا أردت، مثلًا، خمس كلمات في كل سطر، فيمكنك تغيير أول وآخر نجمة إلى {4,}:

/(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+){4,})(?:[,.;:?!& \n\r]?(?:\n|\r|\n\r|\r\n)(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+){4,})){2,10}/is

إذا أردت كلمة واحدة أو أكثر في كل سطر (بين السطر 1 والسطر 5)، فيمكنك تغيير المحتوى الموجود داخل آخر قوسين معقوفين إلى 0,4 (لاحظ أنك تستخدم 0 لأنك تطابق السطر الأول بالفعل).

/(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+)*)(?:[,.;:?!& \n\r]?(?:\n|\r|\n\r|\r\n)(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+)*)){0,4}/is

عدد الكلمات

يقيّد التعبير التالي عدد الكلمات المسموح بها بحد أدنى 1 وحد أقصى 200:
/^[-\w]+(?:\W+[-\w]+){0,199}\W*$/
لزيادة الحد الأدنى، غيّر الجزء الصفري في {0,199}.

لزيادة الحد الأقصى أو تقليله، غيّر الجزء "199" في {0,199}.

التحقق من الوقت

هناك عدة طرق لكتابة صيغ الوقت. من الخيارات الممكنة نظام 12 ساعة أو 24 ساعة، مع الثواني أو بدونها. ورغم أنه يمكنك استخدام نوع السؤال تاريخ (يمكنه التقاط الوقت أيضًا)، يمكنك استخدام نوع السؤال نص حر قصير مع أحد التعبيرات المنتظمة للتحقق من الصحة أدناه.

تختبر سلاسل التحقق الثلاث التالية الوقت بنظام 24 ساعة (بالترتيب) بدون ثوانٍ، ثم مع ثوانٍ اختيارية، وأخيرًا مع ثوانٍ إلزامية:

/^(?:[01][0-9]|2[0-3]):[0-5][0-9]$/
/^(?:[01][0-9]|2[0-3]):[0-5][0-9](?::[0-5][0-9])?$/
/^(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]$/

تطابق التعبيرات الثلاثة التالية الوقت بنظام 12 ساعة، كما سبق: مع الثواني، ومع ثوانٍ اختيارية، ومع ثوانٍ إلزامية:

/^(?">00:[0-5][0-9] (?:am|AM)|(?:0[1-9]|1[01]):[0-5][0-9] (?:[ap]m|[AP]M)|12:[0-5][0-9] (?:pm|PM))$/
/^(?:00:[0-5][0-9](?::[0-5][0-9])? (?:am|AM)|(?:0[1-9]|1[01]):[0-5][0-9](?::[0-5][0-9])? (?:[ap]m|[AP]M)|12:[0-5][0-9](?::[0-5][0-9])? (?:pm|PM))$/
/^(?:00:[0-5][0-9]:[0-5][0-9] (?:am|AM)|(?:0[1-9]|1[01]):[0-5][0-9]:[0-5][0-9] (?:[ap]m|[AP]M)|12:[0-5][0-9]:[0-5][0-9] (?:pm|PM))$/

تطابق التعبيرات الثلاثة التالية الوقت بنظام 12 أو 24 ساعة، كما سبق: مع الثواني، ومع ثوانٍ اختيارية، ومع ثوانٍ إلزامية:

/^(?:(?:00:[0-5][0-9] (?:am|AM)|(?:0[1-9]|1[01]):[0-5][0-9] (?:[ap]m|[AP]M)|12:[0-5][0-9] (?:pm|PM))|(?:[01][0-9]|2[0-3]):[0-5][0-9])$/
/^(?:(?:00:[0-5][0-9](?[0-5][0-9])? (?:am|AM)|(?:0[1-9]|1[01]):[0-5][0-9](?[0-5][0-9])? (?:[ap]m|[AP]M)|12:[0-5][0-9](?[0-5][0-9])? (?:pm|PM))|(?:[01][0-9]|2[0-3]):[0-5][0-9](?[0-5][0-9])?)$/
/^(?:(?:00:[0-5][0-9]:[0-5][0-9] (?:am|AM)|(?:0[1-9]|1[01]):[0-5][0-9]:[0-5][0-9] (?:[ap]m|[AP]M)|12:[0-5][0-9]:[0-5][0-9] (?:pm|PM))|(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9])$/

الولايات الأمريكية

للتحقق من ولاية واحدة، استخدم ما يلي (المثال هو ولاية تكساس):

  • TX بالأحرف الكبيرة فقط:
    /^(TX)$/
    
  • tx بالأحرف الصغيرة فقط:
    /^(tx)$/
    
  • TX بالأحرف الكبيرة أو الصغيرة:
    /^([T|t][X|x])$/
    


مرشح الألفاظ النابية

لتصفية الألفاظ النابية من إجابة:

/^(?i)((?!\bENTERPROFANITYHERE\b).)*$(?-i)/

استبدل "ENTERPROFANITYHERE" بالكلمة النابية التي تريدها.

سيسمح الرمز \b بمرور كلمات مثل "assassination" و"hello" إذا أدخلت "ass" أو "hell" ككلمة نابية. ويعمل هذا أيضاً إذا كنت تحاول استبعاد كلمات أخرى أو أسماء وغيرها من الإجابات.


روابط مفيدة

في بداية هذا القسم من الويكي، نوصي باستخدام https://regex101.com/ لاختبار/إنشاء التعبيرات النمطية. يمكنك أيضاً استخدام https://www.regextester.com/ لإنشاء التعبيرات في حال لم يعجبك الخيار الأول. ويمكنك استخدام https://extendsclass.com/regex-tester.html لعرض التعبيرات النمطية بصرياً.