تعبير منتظم لقبول الأحرف الأبجدية الرقمية (6-10 chars) .net ، ج#

StackOverflow https://stackoverflow.com/questions/2190376

سؤال

أقوم بإنشاء نموذج تسجيل مستخدم باستخدام C# مع .NET. لدي شرط للتحقق من صحة حقول كلمة المرور التي تم إدخالها. متطلبات التحقق من الصحة كما هو موضح أدناه.

  1. يجب أن يكون أبجديًا رقميًا (AZ ، AZ ، 0-9)
  2. يجب أن تقبل 6-10 أحرف (الحد الأدنى 6 أحرف ، 10 أحرف 10)
  3. مع واحد على الأقل من الأبجدية والرقم (مثال: stack1over)

أنا أستخدم تعبيرًا منتظمًا على النحو التالي.

^([a-zA-Z0-9]{6,10})$

يرضي أول شروط 2. يفشل عندما أدخل الأحرف أو الأرقام فقط.

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

المحلول

مررها عبر regexes متعددة إذا استطعت. سيكون أكثر نظافة من تلك الوحوش المظهر :-)

^[a-zA-Z0-9]{6,10}$
[a-zA-Z]
[0-9]

على الرغم من أن البعض قد يعتبره ذكيًا ، فليس من الضروري القيام به كل شىء مع regex واحدة (أو حتى مع أي regex ، في بعض الأحيان - فقط شاهد الأشخاص الذين يرغبون في اكتشاف الأرقام بين 75 و 4093).

هل تفضل رؤية بعض التعليمات البرمجية النظيفة اللطيفة مثل:

if not checkRegex(str,"^[0-9]+$")
    return false
val = string_to_int(str);
return (val >= 75) and (val <= 4093)

أو شيء من هذا القبيل:

return checkRegex(str,"^7[5-9]$|^[89][0-9]$|^[1-9][0-9][0-9]$|^[1-3][0-9][0-9][0-9]$|^40[0-8][0-9]$|^409[0-3]$")

أنا أعرف أي واحد هوية شخصية تفضل الحفاظ على :-)

نصائح أخرى

استخدام إيجابية انظر للأمام

^(?=.*[a-zA-Z])(?=.*[0-9])[a-zA-Z0-9]{6,10}$

وتسمى البحث عن حولك أيضًا تأكيدات ذات عرض صفر. إنها عرض صفر تمامًا مثل بداية ونهاية الخط (^, $). الفرق هو أن LookArounds سوف تتطابق فعليًا إلى الشخصيات ، ولكن بعد ذلك التخلي عن المباراة وإرجاع النتيجة فقط: تطابق أو بدون تطابق. لهذا السبب يطلق عليهم "التأكيدات". إنهم لا يستهلكون أحرفًا في السلسلة ، لكنهم يؤكدون فقط ما إذا كانت المباراة ممكنة أم لا.

بناء الجملة للنظر حوله:

  • (?=REGEX) lookahead إيجابية
  • (?!REGEX) lookahead السلبية
  • (?<=REGEX) نظرة إيجابية
  • (?<!REGEX) نظرة سلبية
string r = @"^(?=.*[A-Za-z])(?=.*[0-9])[A-Za-z0-9]{6,10}$";
Regex x = new Regex(r);
var z = x.IsMatch(password);

http://www.regular-expressions.info/refadv.html

http://www.regular-expressions.info/lookaround.html

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