Regular Expression (RegEx) คืออะไร?
Regular Expression หรือ RegEx คือรูปแบบภาษาหนึ่งที่ใช้ในการจับคู่ข้อความ (text matching) เพื่อการค้นหา แทนที่ หรือ ตรวจสอบ ความถูกต้องของข้อมูล เช่น การตรวจสอบอีเมล เบอร์โทรศัพท์ หรือรหัสผ่าน
RegEx ถูกนำไปใช้ในหลายภาษา เช่น JavaScript, Python, PHP, Java เป็นต้น
โครงสร้างพื้นฐานของ RegEx
^
: เริ่มต้นด้วย$
: จบด้วย.
: ตัวอักษรใด ๆ 1 ตัว*
: ซ้ำได้ไม่จำกัด+
: ซ้ำได้อย่างน้อย 1 ครั้ง?
: มีหรือไม่มีตัวอักษรนี้ก็ได้[]
: กลุ่มของตัวอักษร เช่น [a-z]
{n}
: จำนวนครั้งที่ต้องตรงตาม n
\d
: ตัวเลข (0-9)\w
: ตัวอักษรหรือตัวเลข (a-z, A-Z, 0-9, _)
ตัวอย่างการใช้งาน RegEx ในการตรวจสอบค่าจากอินพุต
1. ตรวจสอบอีเมล
javascriptfunction validateEmail(email) {
const pattern = /^[\w.-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
return pattern.test(email);
}
// ตัวอย่างใช้งาน
console.log(validateEmail("john.doe@gmail.com")); // true
console.log(validateEmail("john.doe@.com")); // false
2. ตรวจสอบเบอร์โทรศัพท์ (เช่น เบอร์ไทย 10 หลัก เริ่มด้วย 06, 08, 09)
javascriptfunction validatePhone(phone) {
const pattern = /^(06|08|09)\d{8}$/;
return pattern.test(phone);
}
console.log(validatePhone("0812345678")); // true
console.log(validatePhone("021234567")); // false
3. ตรวจสอบรหัสผ่าน (ต้องมีอย่างน้อย 8 ตัวอักษร ประกอบด้วยตัวพิมพ์เล็ก พิมพ์ใหญ่ ตัวเลข และอักขระพิเศษ)
javascriptfunction validatePassword(password) {
const pattern = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[\W_]).{8,}$/;
return pattern.test(password);
}
console.log(validatePassword("Test@1234")); // true
console.log(validatePassword("password")); // false
4. ตรวจสอบค่าที่เป็นตัวเลขเท่านั้น
javascriptfunction isNumeric(value) {
const pattern = /^\d+$/;
return pattern.test(value);
}
console.log(isNumeric("123456")); // true
console.log(isNumeric("123abc")); // false
✅ รูปแบบ RegEx สำหรับตรวจสอบอักษรภาษาไทย
อักษรไทยอยู่ในช่วง Unicode: \u0E00-\u0E7F
ตัวอย่าง RegEx:
regex^[\u0E00-\u0E7F]+$
^
: เริ่มต้นข้อความ[\u0E00-\u0E7F]+
: ต้องเป็นอักษรไทยอย่างน้อย 1 ตัวหรือมากกว่า$
: จบข้อความ
📌 ตัวอย่างโค้ด JavaScript
javascriptfunction isThaiText(text) {
const pattern = /^[\u0E00-\u0E7F]+$/;
return pattern.test(text);
}
// ตัวอย่างการใช้งาน
console.log(isThaiText("สวัสดี")); // true
console.log(isThaiText("Hello")); // false
console.log(isThaiText("123")); // false
console.log(isThaiText("สวัสดี123")); // false
✅ หากต้องการให้ มีเว้นวรรคด้วย (เช่น "นาย สมชาย")
ให้เพิ่มเว้นวรรคเข้าไปในกลุ่ม [ ]
:
javascriptconst pattern = /^[\u0E00-\u0E7F\s]+$/;
\s
คือช่องว่าง (space, tab, newline)
✅ หากต้องการ ตรวจเฉพาะว่า “มีอักษรไทยอยู่ในข้อความหรือไม่” (ไม่ต้องทั้งข้อความ)
javascriptfunction containsThai(text) {
const pattern = /[\u0E00-\u0E7F]/;
return pattern.test(text);
}
console.log(containsThai("Hello สวัสดี")); // true
console.log(containsThai("Hello World")); // false
ความต้องการ | RegEx |
---|---|
เป็นอักษรไทยทั้งหมด | ^[\u0E00-\u0E7F]+$ |
เป็นอักษรไทย + ช่องว่าง | ^[\u0E00-\u0E7F\s]+$ |
มีอักษรไทยอยู่บางส่วนในข้อความ | [\u0E00-\u0E7F] |
สรุป
การใช้ RegEx เป็นเทคนิคที่ทรงพลังในการตรวจสอบความถูกต้องของข้อมูลในรูปแบบต่าง ๆ โดยสามารถนำไปใช้ในการพัฒนาเว็บไซต์ ฟอร์มกรอกข้อมูล หรือแอปพลิเคชันต่าง ๆ ได้อย่างยืดหยุ่นและปลอดภัย
หากคุณเข้าใจพื้นฐานและฝึกฝนการใช้ RegEx จะสามารถประหยัดเวลาในการตรวจสอบค่าต่าง ๆ ได้อย่างมาก