Regular expressions (2009-12-29)
เรื่องของ Regular expressions นั้นสามารถใช้ได้กับทุกภาษา โดยสำหรับ Javascript นั้นจะช่วยให้การพัฒนาเว็บไซท์ได้ โดยช่วยได้ในการกรองข้อมูลที่ผู้เข้าชมเว็บไซท์กรอกเข้ามา ซึ่งช่วยลดการทำงานของ webserver ลงได้เยอะมากครับ
การใช้งาน regular expressions นั้น จะต้องประกาศอยู่ภายใน /.../ โดยมีส่วนสำคัญอยู่ 2 ส่วน คือ
- Flag เป็นตัวที่บอกว่า pattern ที่ต้องการเปรียบเทียบนั้นจะใช้แบบใด โดยมี
- g เป็นการเปรียบเทียบแบบ case-sensitive
- i เป็นการเปรียบเทียบแบบ case-insensitive
- m เป็นการเปรียบเทียบแบบหลายบรรทัด *
- s เป็นการเปรียบเทียบแบบบรรทัดเดียว *
- x เป็นการเปรียบเทียบแบบไม่สนใจช่องว่าในข้อความ *
* ไม่สามารถใช้ได้กับ Netscape Navigator 4 และ Internet Explorer 4
- Pattern เป็นรูปแบบที่ต้องการเปรียบเทียบ โดยแบ่งออกเป็น
- Charactor matching
- ชนิดตัวอัษร ประกอบด้วย a..z, A..Z, 0..9, \
- ชนิด Unicode ฐาน 16 ประกอบด้วย \u0000...\uFFFF
- ชนิด ASCII ฐาน 16 ประกอบด้วย \x00...\xFF
- ชนิด Control charactor ประกอบด้วย \cA...\cZ
- \0 เทียบได้กับ Null charactor \x00
- [\b] เทียบได้กับ Back space \x08
- \t เทียบได้กับ tab \x09
- \r เทียบได้กับ carriage return \x0D
- \n เทียบได้กับ newline \x0A
- Charactor classes
- \d ตัวเลข มีต่าเท่ากับ /[0-9]/
- \D ไม่ใช่ตัวเลข
- \s ช่องว่าง มีค่าเท่ากับ space, tab, \r
- \S ไม่ใช่ช่องว่าง
- \w คำ เทียบได้กับ กลุ่มอักษร, ตัวเลข, _
- \W ไม่ใช่คำ
- [...] ใช้เทียบว่ามีอยู่ในกลุ่มอักษร
- [^...] ใช้เทียบว่าไม่มีอยู่ในกลุ่มอักษร
- (...) ใช้จัดกลุ่มของ pattern
- - ใช้เทียบเป็นช่วงอักษร
- Repeaters
- ? แทน 0 หรือ 1 ตัวอักษร
- * แทน 0 หรือหลายตัวอักษร
- + แทน 1 ตัวอักษรขึ้นไป
- {n}แทนอักษรจำนวน n ตัว
- {n,} แทนอัษรจำนวน n ตัวหรือมากกว่า
- {n,m} แทนอักษรจำนวน n ตัวจนถึง m ตัว
- | แทน or
- . แทนอักษรใดๆ
- Anchors
- ^ เริ่มต้นด้วย
- $ ปิดท้ายด้วย
- Methods
- regular_obj.test(string) เป็นการเปรียบเทียบ string กับ regular_obj
- string.search(regular_obj) เป็นการค้นหา regular_obj จาก string
- string.replace(regular_obj,string_replace) เป็นการแทนที่คำที่ตรงกับ regular_obj ด้วย string_replace
- string.match(regular_obj) เป็นการเปรียบเทียบข้อความกับ regular_obj โดยจะมีการคืนค่าเป็น array ของข้อความที่ตรงกับ regular_obj
- string.split(regular_obj) เป็นการแยกข้อความที่ตรงกับ regular_obj ออกเป็นส่วนๆ โดยจะคืนค่ามาเป็น array ของข้อความ
- regular_obj.exec(string) จะเป็นการเปรียบเทียบข้อความ เหมือนกับ match แต่ exec เมื่อทำงานอยู่ใน loop แล้ว จะทำการเปรียบเทียบไปจนหมดข้อความ โดยมีการคืนค่าเป็น array ของข้อความเช่นเดียวกับ match
การประกาศ regular expressions object นั้นสามารทำได้ 2 แบบคือ
var regexp = new RegExp(string); เป็นการประกาศโดยใช้ constructor
var regexp = /test/; เป็นการประกาศลักษณะข้อความ
ตัวอย่างการใช้งาน
var regexp = /[0-9]{5}/; หรือ
var regexp = /\d{5}/;
alert(regexp.test("12345"));
เป็นการตรวจสอบ input อย่างง่ายๆ ในที่นี้สามารถใช้ตรวจสอบรหัสไปรษณีย์ได้
var regexp = /^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/;
เป็นการตรวจสอบ input แบบ e-mail address
|