REGEX للعثور على اسم ملف صالح
-
06-07-2019 - |
سؤال
وأريد أن تحقق ما إذا كانت سلسلة هو اسم الملف (اسم DOT تحويلة) أم لا.
لا يمكن أن يحتوي اسم الملف / ? * : ; { } \
وأرجو أن توحي لي التعبير رجإكس لاستخدامها في preg_match ()؟
المحلول
وهنا تذهب:
"[^/?*:;{}\\]+\\.[^/?*:;{}\\]+"
و"الأحرف واحد أو أكثر التي ليست أي من هؤلاء الصغار، ثم نقطة، ثم بعض أكثر الشخصيات التي ليست هذه منها."
و(طالما كنت على يقين من أن النقطة مطلوب حقا - إن لم يكن، انها ببساطة: "[^/?*:;{}\\]+"
نصائح أخرى
$a = preg_match('=^[^/?*;:{}\\\\]+\.[^/?*;:{}\\\\]+$=', 'file.abc');
^ ... $ - begin and end of the string
[^ ... ] - matches NOT the listed chars.
والتعبير المعتاد أن يكون شيء من هذا القبيل (لمدة ثلاث إلكتروني التمديد):
^[^/?*:;{}\\]+\.[^/?*:;{}\\]{3}$
وPHP يحتاج الخطوط المائلة العكسية هرب، وpreg_match()
يحتاج مائلة هرب، لذلك:
$pattern = "/^[^\\/?*:;{}\\\\]+\\.[^\\/?*:;{}\\\\]{3}$/";
لتطابق أسماء مثل "hosts"
أو ".htaccess"
، استخدم هذا التعبير معدلة بشكل طفيف:
^[^/?*:;{}\\]*\.?[^/?*:;{}\\]+$
وفيما يلي التعبير المعتاد تستخدم لفحص يونكس اسم الملف في برنامج Golang:
reg := regexp.MustCompile("^/[[:print:]]+(/[[:print:]]+)*$")
لا تنتمي إلى StackOverflow