কম্পিউটার টিউটোরিয়াল

MySQL-এ রেগুলার এক্সপ্রেশন (Regex) ব্যবহার করে ডেটা ভ্যালিডেশন (ট্রিগার দিয়ে)

MySQL-এ ডেটা ইনসার্টের আগে রেগুলার এক্সপ্রেশন দিয়ে ভ্যালিডেশন করতে BEFORE INSERT ট্রিগার ব্যবহার করা হয়।

উদাহরণ: ফোন নম্বর ভ্যালিডেশন

টেবিল তৈরি:

mysql> CREATE TABLE enforceDataUsingRegularExpression (
    -> yourPhoneNumber VARCHAR(60)
    -> );

ট্রিগার তৈরি (ফোন ফরম্যাট: +কান্ট্রিকোড-নম্বর):

mysql> DELIMITER //
mysql> CREATE TRIGGER enforce_phone_check BEFORE INSERT ON enforceDataUsingRegularExpression
    -> FOR EACH ROW
    -> BEGIN
    ->     IF (NEW.yourPhoneNumber REGEXP '^(\\+?[0-9]{1,4}-)?[0-9]{3,10}$' ) = 0 THEN
    ->         SIGNAL SQLSTATE '33455'
    ->         SET MESSAGE_TEXT = 'Your Phone Number is incorrect';
    ->     END IF;
    -> END //
Query OK, 0 rows affected (0.16 sec)
mysql> DELIMITER ;

ভুল ফোন নম্বর ইনসার্ট করলে এরর:

mysql> INSERT INTO enforceDataUsingRegularExpression VALUES("+55242-64576");
ERROR 1644 (33455): Your Phone Number is incorrect
mysql> INSERT INTO enforceDataUsingRegularExpression VALUES("+76-WD1232221");
ERROR 1644 (33455): Your Phone Number is incorrect

সঠিক ফোন নম্বর ইনসার্ট:

mysql> INSERT INTO enforceDataUsingRegularExpression VALUES("+55-1232221");
Query OK, 1 row affected (0.13 sec)

ফলাফল:

mysql> SELECT * FROM enforceDataUsingRegularExpression;
+-----------------+
| yourPhoneNumber |
+-----------------+
| +55-1232221     |
+-----------------+

ব্যাখ্যা: রেগেক্স ^(\\+?[0-9]{1,4}-)?[0-9]{3,10}$ মানে: অপশনাল + এবং ১-৪ ডিজিট কান্ট্রি কোড उसकेপর হাইফেন, তারপর ৩-১০ ডিজিট নম্বর। SIGNAL SQLSTATE দিয়ে কাস্টম এরর মেসেজ দেওয়া হয়েছে। আপডেটের জন্যও BEFORE UPDATE ট্রিগার লাগবে।

  1. পাইথন রেগুলার এক্সপ্রেশন ব্যবহার করে শুধু ডিজিট ম্যাচ করার পদ্ধতি

  2. পাইথন রেগুলার এক্সপ্রেশন ব্যবহার করে হোয়াইটস্পেস ম্যাচ করার পদ্ধতি

  3. পাইথন রেগুলার এক্সপ্রেশন ব্যবহার করে নন-ওয়ার্ড ক্যারেক্টার ম্যাচ করার পদ্ধতি

  4. পাইথন রেগুলার এক্সপ্রেশন ব্যবহার করে ওয়ার্ড ম্যাচ করার পদ্ধতি