يتطلب التعبير العادي # من الأحرف التي لا تحتوي على مسافات بيضاء

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

  •  06-07-2019
  •  | 
  •  

سؤال

لدي منطقة النص.أحاول التحقق من أنه يحتوي على 3 أحرف على الأقل بدون مسافات بيضاء في جافا سكريبت، وإذا كان الأمر كذلك، فأنا بحاجة إلى إعادة التحقق من الرسالة المنشورة في php.

أعتقد أنه بمجرد أن أجعله يعمل في PHP، يمكنني استخدام نفس regexp لجافا سكريبت.ومع ذلك، فإن المسافات البيضاء تفسد الأمر.

لا أفهم لماذا لا يعمل ما يلي في php:

$msg = mysql_real_escape_string($_POST["msg"]);

if(!preg_match('/[\S]{3,}/',$msg)){
     echo 'too short';
}

بالنسبة لي يبدو أن هذا يتطلب على الأقل 3 "أحرف غير مسافة بيضاء".ولكن إذا قمت بإدخال:

f f f

وتقول أنها قصيرة جدا.و

f 

d

يمر، يمرر، اجتاز بنجاح.لقد حاولت إضافة علامة "g" واللعب بـ ^ و$ المحيطة بالتعبير العادي.

شكرا على أي نصائح

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

المحلول

يتطابق التعبير العادي الخاص بك مع 3 تالي أحرف غير المسافة البيضاء.

ما يلي يطابق 3 أحرف غير مسافات بيضاء، مفصولة بأي شيء:

/(\S.*){3,}/

لإجراء التحقق من الصحة عبر أسطر متعددة، قم بإضافة s المعدل:

/(\S.*){3,}/s

يجب عليك أيضًا إجراء التحقق من الصحة قبل الاتصال mysql_real_escape_string.في المثال الخاص بك، يتم تحويل السلسلة الثانية إلى f\r\nd أو f\nd أولاً.يحتوي الآن على 3 أحرف لاحقة بدون مسافات بيضاء!كما ترون، هذا يفسد التحقق من الصحة.

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