سؤال

أحتاج إلى regex (php) لمطابقة قواعد اسم مستخدم Yahoo:

استخدم من 4 إلى 32 حرفًا وابدأ بحرف.يمكنك استخدام الحروف والأرقام والشرطات السفلية ونقطة واحدة (.).

هل كانت مفيدة؟

المحلول

/^[A-Za-z](?=[A-Za-z0-9_.]{3,31}$)[a-zA-Z0-9_]*\.?[a-zA-Z0-9_]*$/

وأو أقصر قليلا:

/^[a-z](?=[\w.]{3,31}$)\w*\.?\w*$/i

نصائح أخرى

/[a-zA-Z][a-zA-Z0-9_]*\.?[a-zA-Z0-9_]*/

ومعرفة ما اذا كان strlen ($ اسم المستخدم)> = 4 و <= 32.

وحد نقطة واحدة؟ هذا صعب.

وأنا لست خبيرا التعابير المنطقية، ولكن أعتقد أن هذا من شأنه أن تحصل عليه، باستثناء ما يلي:

[A-Za-z][A-Za-z0-9_.]{3,31}

وربما يمكن أن تحقق لل. مطلب على حدة؟

باستخدام lookheads يمكنك القيام بما يلي:

^(?=[A-Za-z](?:\w*(?:\.\w*)?$))(\S{4,32})$

نظرًا لأنك لم تحدد نوع التعبير العادي الذي تحتاجه، فقد أضفت الكثير من العناصر المتوافقة مع Perl 5.يحب (?: ... ) للأقواس غير الملتقطة.

ملحوظة: أضفت قوس الإغلاق المفقود مرة أخرى.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top