A-AA+then

ขอถามเกี่ยวกับการเขียน patturn ของ regular

3,068
ขอถามเกี่ยวกับการเขียน patturn ของ regular
ผมเพิ่งหัดเรียน PHP อ่ะครับแล้วเพิ่งอ่านมาถึงบท regular expression แต่ยังติดตรงการเขียนเช็คอีเมลล์ครับ

code
 function regular_match($pat, $text) {
switch (ereg($pat, $text)) {
case true:
echo "ค่า $text Match กับ $pat";
break;
case false:
echo "ไม่ Match กัน";
break;
}
}

$pat2 = "^[a-zA-Z][a-zA-Z0-9\.\_\-]+@[a-zA-Z0-9][a-zA-Z0-9\-]+[\.][a-zA-Z]+$";
$text2 = "A2sA_.-@Hot-Mail.com";
regular_match($pat2, $text2);
ปัญหา ปัญหาอยู่ตรงที่ $text2 = "A2sA_.-@Hot-Mail.com"; คือถ้าผมเติมเป็น .co.th หรือ .mi.th มันจะบอกว่าไม่ Match อ่ะครับ ขอบคุณครับ

4 ความคิดเห็น

หรือถ้าท่านใดมีวิธีเขียนที่กระชับแล้วเข้าใจง่ายกว่านี้
ถ้าแนะนำเทคนิคสักหน่อย ผมจะขอบคุณมากครับ
1

ปกติผมใช้แค่เนี้ย

if (!eregi("^.+@.+\..+$", $register[email]))
2

แล้วปัญหาที่ผมเรียนถาม
พอมีวิธีแก้ไหมครับ

คือผมจะแก้ตรงนี้ประมาณว่า
[\.][a-zA-Z] ให้ตรวจสอบว่าต้องเริ่มด้วย . เท่านั้น แล้วตามด้วย a-zA-Z อย่างน้อยสองตัว แล้วจะตามด้วยจุดอีกก็ได้ แต่ต้องตามด้วย a-zA-Z สองตัวอีกเหมือนเดิม จะเขียนยังไงขอรับ
3

^[a-zA-Z][a-zA-Z0-9\.\_\-]+@[a-zA-Z\.-_]+$
4
^