Phone number validation একটি সাধারণ এবং গুরুত্বপূর্ণ কাজ যা বিভিন্ন ধরনের ফরম্যাটে ফোন নম্বর যাচাই করার জন্য ব্যবহৃত হয়। এখানে, আমরা Java Reflection API এবং Java Regular Expressions (Regex) ব্যবহার করে Phone Number Validation এর একটি উদাহরণ দেখব।
এটি আমাদের ফোন নম্বরের ফরম্যাট চেক করার জন্য Regex ব্যবহার করবে এবং Reflection দিয়ে ফোন নম্বর ফিল্ডের মান ভ্যালিডেট করবে।
Phone Number Validation (Regex)
ধরা যাক, আমাদের একটি ফোন নম্বরের ফরম্যাট হতে পারে:
- +1-234-567-8901
- +44 123 456 7890
- 123-456-7890
এই ধরনের ফরম্যাটে ফোন নম্বর যাচাই করার জন্য একটি সাধারণ Regex pattern ব্যবহার করা যেতে পারে। উদাহরণস্বরূপ, একটি phone number regex যা আন্তর্জাতিক নম্বর ফরম্যাট এবং অন্যান্য সাধারণ ফরম্যাটগুলো সমর্থন করে:
Regex Pattern: ^\+?[0-9]{1,4}?[-.\s]?[0-9]+[-.\s]?[0-9]+[-.\s]?[0-9]+$
এখন, আমরা এই Regex প্যাটার্ন ব্যবহার করে একটি PhoneNumber ক্লাস তৈরি করব এবং Java Reflection ব্যবহার করে তার মান যাচাই করব।
Step 1: PhoneNumber ক্লাস তৈরি করা
public class PhoneNumber {
private String phoneNumber;
public PhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}
// Getter for phoneNumber
public String getPhoneNumber() {
return phoneNumber;
}
// Setter for phoneNumber
public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}
}
Step 2: Reflection এবং Regex ব্যবহার করে Phone Number Validation
এখন আমরা Reflection API ব্যবহার করে PhoneNumber ক্লাসের ফিল্ডের মান যাচাই করব এবং Regex প্যাটার্ন দিয়ে তা ভ্যালিডেট করব।
import java.lang.reflect.*;
import java.util.regex.*;
public class PhoneNumberValidator {
public static void main(String[] args) {
// Create a PhoneNumber object
PhoneNumber phone = new PhoneNumber("+1-234-567-8901");
try {
// Using Reflection to access the 'phoneNumber' field
Class<?> clazz = phone.getClass();
Field field = clazz.getDeclaredField("phoneNumber");
field.setAccessible(true); // Make the private field accessible
// Get the phone number value
String phoneNumberValue = (String) field.get(phone);
// Validate the phone number using regex
if (isValidPhoneNumber(phoneNumberValue)) {
System.out.println("Valid phone number: " + phoneNumberValue);
} else {
System.out.println("Invalid phone number: " + phoneNumberValue);
}
} catch (NoSuchFieldException | IllegalAccessException e) {
e.printStackTrace();
}
}
// Method to validate phone number using regex
private static boolean isValidPhoneNumber(String phoneNumber) {
String phoneRegex = "^\\+?[0-9]{1,4}?[-.\\s]?[0-9]+[-.\\s]?[0-9]+[-.\\s]?[0-9]+$";
Pattern pattern = Pattern.compile(phoneRegex);
Matcher matcher = pattern.matcher(phoneNumber);
return matcher.matches();
}
}
ব্যাখ্যা:
PhoneNumberক্লাস:- এটি একটি সাধারণ ক্লাস যা
phoneNumberফিল্ড ধারণ করে এবং তার জন্য একটি কনস্ট্রাক্টর এবং getter/setter পদ্ধতি প্রদান করে।
- এটি একটি সাধারণ ক্লাস যা
- Reflection API:
Class.getDeclaredField("phoneNumber")ব্যবহার করে আমরাphoneNumberফিল্ডটি Reflection এর মাধ্যমে অ্যাক্সেস করেছি।setAccessible(true)মেথডটি ব্যবহার করে private ফিল্ডটি অ্যাক্সেসযোগ্য করে তোলা হয়েছে।
- Regex Validation:
isValidPhoneNumber()মেথডে একটি Regex pattern ব্যবহার করা হয়েছে যা ফোন নম্বরের বৈধতা যাচাই করে।Pattern.compile()এবংMatcher.matcher()মেথড ব্যবহার করে স্ট্রিংয়ের সাথে প্যাটার্ন মিলানো হয়েছে।
Step 3: Output
যদি আপনি ফোন নম্বরের একটি বৈধ মান প্রদান করেন, যেমন " +1-234-567-8901 ":
Valid phone number: +1-234-567-8901
যদি আপনি একটি অবৈধ ফোন নম্বর প্রদান করেন, যেমন " 12345 ":
Invalid phone number: 12345
Regex Pattern Explanation:
Pattern: ^\+?[0-9]{1,4}?[-.\s]?[0-9]+[-.\s]?[0-9]+[-.\s]?[0-9]+$
^\+?: ফোন নম্বরটি ঐচ্ছিকভাবে+দিয়ে শুরু হতে পারে (যেমন আন্তর্জাতিক নম্বরের জন্য)।[0-9]{1,4}: প্রথমে 1 থেকে 4টি ডিজিট থাকতে পারে (যেমন,+1,+44ইত্যাদি)।[-.\s]?: এরপর একটি ঐচ্ছিক স্পেস, ড্যাশ, অথবা ডট থাকতে পারে।[0-9]+: এরপর একটি বা একাধিক ডিজিট থাকতে হবে (যেমন234,567,8901)।$: স্ট্রিংয়ের শেষ।
এভাবে, Java Reflection এবং Regex একসাথে ব্যবহার করে আপনি phone number validation সহ নানা ধরনের টেক্সট ভ্যালিডেশন এবং ডেটা প্রক্রিয়াকরণ করতে পারেন। Reflection দিয়ে ডাইনামিকভাবে ফিল্ডের মান অ্যাক্সেস করা এবং Regex দিয়ে সেই মান যাচাই করা Java-তে একটি শক্তিশালী টুল হতে পারে।
Read more