ইমেইল ভ্যালিডেশন রেজেক্স
RFC 5322 стандар্ড অনুযায়ী একটি ব্যাপক ইমেইল ভ্যালিডেশন রেজেক্স:
^[\\w!#$%&'*/+=?`{|}~^-]+(?:\\.[\\w!#$%&'*/+=?`{|}~^-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,6}$
রেজেক্স ভাঙন
| পar্ট | অর্থ |
|---|---|
^ | স্ট্রিংয়ের শুরু |
[\\w!#$%&'*/+=?`{|}~^-]+ | লোকাল পার্ট: অক্ষর, সংখ্যা, অন্ডারস্কোর, স্পেশাল চ্যার |
(?:\\.[\\w...]+)* | ডট-সেপারেটেড সাব-পার্ট (non-capturing) |
@ | লিটারেল @ সিম্বল |
(?:[a-zA-Z0-9-]+\\.)+ | ডোমেইন লেবেলস (non-capturing group) |
[a-zA-Z]{2,6} | TLD: ২ থেকে ৬ অক্ষর (com, org, net, info, museum) |
$ | স্ট্রিংয়ের শেষ |
কোড উদাহরণ
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class EmailValidationExample {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("একটি স্ট্রিং লিখুন: ");
String input = sc.nextLine();
String regex = "^[\\w!#$%&'*/+=?`{|}~^-]+(?:\\.[\\w!#$%&'*/+=?`{|}~^-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,6}$";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(input);
if (matcher.matches()) {
System.out.println("ম্যাচ হয়েছে (বৈধ ইমেইল)");
} else {
System.out.println("ম্যাচ হয়নি (অবৈধ ইমেইল)");
}
}
}
আউটপুট উদাহরণ
একটি স্ট্রিং লিখুন: sample.123@gmail.com
ম্যাচ হয়েছে (বৈধ ইমেইল)
দ্রষ্টব্য ও সীমাবদ্ধতা
- এই রেজেক্স RFC 5322 ফুল কম্প্লায়েন্ট নয় (RFC 5322 ফুল রেজেক্স খুব জটিল)।
- TLD লেন্থ ২-৬ ধরে নেওয়া হয়েছে, কিন্তু নতুন gTLD গুলো (`.technology`, `.photography`) বড় হতে পারে।
- ইন্টারন্যাশনালাইজড ইমেইল (Unicode ডোমেইন, নন-ল্যাটিন লোকাল পার্ট) এই রেজেক্সে কভার নয়।
- প্রোডাকশনে
javax.mail.internet.InternetAddressবা Apache Commons Validator `EmailValidator` ব্যবহার করুন।
সরল রেজেক্স (বেসিক ভ্যালিডেশনের জন্য)
String simpleRegex = "^[\\w.-]+@[\\w.-]+\\.[a-zA-Z]{2,}$";
সারসংক্ষেপ
ইমেইল ভ্যালিডেশন রেজেক্স লিখা চ্যালেঞ্জিং। উপরের রেজেক্স সাধারণ কেসের জন্য ভালো কাজ করে। প্রোডাকশন-গ্রেড ভ্যালিডেশনের জন্য লাইব্রেরি ব্যবহার করুন। মনে রাখুন: রেজেক্স দিয়ে ইমেইল ভ্যালিডেশন ১০০% সঠিক নয় — আসল ভ্যালিডেশন হয় ইমেইল পাঠিয়ে ভেরিফিকেশন লিংক ক্লিক করিয়ে।