أساسيات Regular Expressions
جزء من قسم Logic & Flow في رحلة Java على Coddy — الدرس 46 من 59.
تُعد التعبيرات النمطية (regex) أنماطاً تُستخدم للبحث عن السلاسل النصية والتحقق من صحتها. في لغة Java، نستخدم التابع matches() للتحقق مما إذا كانت السلسلة النصية تطابق نمطاً معيناً.
تحقق مما إذا كانت السلسلة النصية تحتوي على أرقام فقط:
String text = "12345";
boolean isMatch = text.matches("[0-9]+");بعد تنفيذ الكود أعلاه، يحتوي isMatch على:
true
تحقق مما إذا كانت السلسلة النصية تحتوي على أحرف فقط:
String text = "Hello";
boolean isMatch = text.matches("[a-zA-Z]+");بعد تنفيذ الكود أعلاه، يحتوي isMatch على:
true
التحدي
سهلقم بإنشاء طريقة (method) تسمى validateInput تأخذ وسيطين:
- سلسلة نصية (
text) للتحقق من صحتها - سلسلة نصية (
type) تحدد نوع التحقق
يجب أن تقوم الطريقة بالتحقق من النص بناءً على هذه الأنواع:
- "number": يجب أن يحتوي على أرقام فقط (0-9)
- "word": يجب أن يحتوي على أحرف فقط (a-z أو A-Z)
- "email": يجب أن يحتوي على @ وحرف واحد على الأقل قبله
- "phone": يجب أن يحتوي على 10 أرقام بالضبط
يجب أن تكون رسائل الإرجاع كما يلي:
- إذا كان النص null: أرجع "Invalid input"
- إذا كان النوع غير صالح: أرجع "Invalid type"
- إذا نجح التحقق: أرجع "Valid"
- إذا فشل التحقق: أرجع "Invalid"
ورقة مرجعية
التعبيرات النمطية (regex) هي أنماط تُستخدم للبحث عن السلاسل النصية والتحقق من صحتها. في Java، استخدم الطريقة matches() للتحقق مما إذا كانت السلسلة النصية تطابق نمطاً معيناً.
تحقق مما إذا كانت السلسلة النصية تحتوي على أرقام فقط:
String text = "12345";
boolean isMatch = text.matches("[0-9]+");تحقق مما إذا كانت السلسلة النصية تحتوي على حروف فقط:
String text = "Hello";
boolean isMatch = text.matches("[a-zA-Z]+");أنماط regex الشائعة:
[0-9]+- رقم واحد أو أكثر[a-zA-Z]+- حرف واحد أو أكثر[0-9]{10}- 10 أرقام بالضبط.+@.+- تحتوي على @ مع وجود حرف واحد على الأقل قبلها
جرّب بنفسك
import java.util.Scanner;
public class Main {
public static String validateInput(String text, String type) {
// اكتب كودك هنا
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String text = scanner.nextLine();
String type = scanner.nextLine();
if (text.equals("null")) text = null;
System.out.println(validateInput(text, type));
}
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Logic & Flow
1المصفوفات متعددة الأبعاد
أساسيات المصفوفات ثنائية الأبعادالوصول إلى عناصر المصفوفات ثنائية الأبعادالحلقات المتداخلة مع المصفوفات ثنائية الأبعادمراجعة - المصفوفات ثنائية الأبعادجمع وطرح المصفوفاتالمصفوفات المتعرجة (Jagged Arrays)المصفوفات ثلاثية الأبعاد وما بعدهاأنماط المصفوفات ثنائية الأبعاد الشائعةمراجعة - كل شيء عن المصفوفات2HashMap الجزء الأول
ما هو الـ HashMap؟تعريف الـ HashMapالوصول إلى القيمالتحقق من وجود المفتاحتعديل القواميسملخص - HashMap5HashSet الجزء الثاني
رياضيات - اتحاد الـ HashSetsرياضيات - تقاطع الـ HashSetرياضيات - فرق المجموعاترياضيات - الفرق المتناظرالمجموعات الجزئية والشاملةالتكرار عبر المجموعات8عمليات السلاسل النصية المتقدمة
أساسيات StringBuilderمقدمة إلى StringBufferأساسيات Regular Expressionsمطابقة الأنماط باستخدام RegexString Tokenizerتنسيق النصوص المتقدم3HashMap الجزء الثاني
دوال HashMapالتكرار باستخدام keySet()التكرار باستخدام entrySet()HashMap متداخلمراجعة - إدارة المستودعمراجعة - عمليات HashMap6التحكم المتقدم في تدفق البرنامج
العبارات المعنونةتعبير Switchمطابقة الأنماطجمل الحمايةمراجعة - تدفق التحكم