รูปแบบโครงสร้างของ Regular Expression (Regular Expression Syntax) ของ ASP.NET
วันที่เขียน 13/1/2554 16:59:25     แก้ไขล่าสุดเมื่อ 14/8/2565 4:07:19
เปิดอ่าน: 10200 ครั้ง

Regular Expression Syntax

     เรื่องราวของ Regular Expression นั้น มีมานานก่อนการเกิดขึ้นของ .NET เพราะมีพื้นฐานมาจากวิชา Theory of Computation ซึ่งมีการนำไปใช้ในการทำ string matching กันอย่างมาก โดยมีภาษา Perl ที่ได้รับการยกย่องว่าเป็นเทพในเรื่องนี้ และก็กลายเป็นรูปแบบที่ .NET ยืมมาใช้ด้วย (Perl5 compatible) การทำ string matching นั้น มีประโยชน์มากในการกลั้นกรอง หรือตรวจสอบข้อความที่ต้องการ

     ที่ผมใช้บ่อยๆเห็นจะเป็นการตรวจสอบ user input สำหรับ .NET แล้ว กรณีที่เป็น Web Application สามารถใช้คอนโทรลกลุ่ม validation เช่น RequiredFieldValidator, RangeValidator เป็นต้น ซึ่งหนึ่งในนั้นมีคอนโทรลที่ชื่อ RegularExpressionValidator อันมีความสามารถ ในการสกัดเอาเฉพาะข้อความที่ต้องการได้ รูปแบบสไตล์ AJAX ด้วย (เพราะเบื้องหลังใช้ความสามารถของ JavaScript) โดยต้องเขียน Regular Expression ไว้ที่ properties ชื่อ ValidationExpression ส่วนกรณีเป็น Windows Application นั้น จะใช้คลาส System.Text.RegularExpressions.Regex มาตรวจสอบเอง (ที่จริงกรณีเป็น Web Application ก็สามารถใช้คลาสนี้ตรวจสอบเองที่ฝั่งเซิร์ฟเวอร์ก็ได้)

การเขียน Regular Expression และตัวอย่างการใช้งาน

  • \ คือ สัญลักษณ์บ่งบอกอักขระพิเศษที่ต่อท้ายมัน เช่น \\ หมายถึง \, \( หมายถึง (, \n หมายถึง newline, \r หมายถึง return
  • ^ คือ สัญลักษณ์บ่งบอกว่าเป็น จุดเริ่มต้นของข้อความ (กรณีที่ใช้อ๊อบเจ็ค Regex แล้วกำหนดพร็อบเพอร์ตี้ Option เป็น MultiLine จะถือว่า \n หรือ \r คือจุดเริ่มต้นเสมอ)
  • $ คือ สัญลักษณ์ของ จุดสิ้นสุดของข้อความ ซึ่งคล้ายกับ ^ (ส่วนใหญ่สัญลักษณ์ ^ หรือ $ จะใช้กับข้อความที่มีหลายบรรทัด)
  • * คือ สัญลักษณ์ที่บ่งบอกว่า อักขระหน้ามันจะมีซ้ำกี่ครั้งก็ได้ หรือไม่มีเลยก็ได้ (หรือพูดง่ายๆ ว่าตั้งแต่ 0 ตัวขึ้นไป) ตัวอย่างเช่น ab* หมายถึง a, ab, abb, abbb, abbb... อีกตัวอย่าง (ab)*c หมายถึง c, abc, ababc, abab....c เป็นต้น
  • + คือ สัญลักษณ์ที่คล้ายๆ * แต่ต่างกันที่ + จะต้องมีอย่างน้อย 1 ตัว (หรือตั้งแต่ 1 ตัวขึ้นไป) ถ้าใช้ตัวอย่างคล้ายๆ ด้านบนเช่น ab+ หมายถึง ab, abb, abbb... อีกตัวอย่าง (ab)+c หมายถึง abc, ababc, abab.....c
  • ? คือ สัญลักษณ์ที่บ่งบอกว่า อักขระหน้ามันจะมีหรือไม่ก็ได้ แต่ถ้ามีจะมีแค่ชุดเดียว ตัวอย่างเช่น ab? หมายถึง a หรือ ab เท่านั้น อีกตัวอย่าง a(bc)? หมายถึง a หรือ abc เท่านั้น (ข้อสังเกต สัญลักษณ์จะครอบคลุมแค่อักขระหน้ามันตัวเดียวเท่านั้น เช่น ab+ แค่อักษร b ตัวเดียวเท่านั้นที่มีอย่างน้อย 1 ตัว ถ้าต้องการให้ครอบคลุมตัวอักษรที่ต้องการให้ใส่วงเล็บคลุมไว้)

ตัวอย่างการนำไปใช้จริง

  • email : รูปแบบ "\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"
  • ตัวอย่างที่ valid ผ่าน เช่น ex-th3.d@thailand5-go.co.th
  • ตัวอย่างที่ valid ไม่ผ่าน เช่น ex-@gmail.

แหล่งข้อมูล

  1. Introduction to Regular Expressions
  2. Regular Expression Syntax
  3. Use Regular Expressions to Constrain Input in ASP.NET

คำสำคัญ :
กลุ่มบทความ :
หมวดหมู่ :
แชร์ :
https://erp.mju.ac.th/acticleDetail.aspx?qid=37
ความคิดเห็นทั้งหมด (0)
ไม่มีข้อมูลตามเงื่อนไขที่ท่านกำหนด
รายการบทความการแลกเปลี่ยนเรียนรู้หมวดหมู่ : วิทยาศาสตร์ เทคโนโลยี
อ. มธุรส ชัยหาญ » การอบรมเชิงปฏิบัติติการ เรื่องเครือข่ายนักวิจัย เพื่อเตรียมความพร้อมเป็นศูนย์ประสานงานเครือข่ายการจับคู่ธุรกิจอาหารนวัตกรรม ภาคเหนือ
สำนักงานคณะกรรมการอาหารและยาได้อนุมัติให้กองอาหาร จัดทำโครงการศูนย์จับคู่ธุรกิจอาหารนวัตกรรม (Innovative Food Matching Center) เพื่อส่งเสริมให้ผลงานวิจัยด้านการแปรรูปมีความพร้อมสู่การผลิตเชิงพาณิชย...
นวัตกรรมอาหาร, กฎหมายอาหาร, อาหารใหม่, ประเภทอาหาร, อย.     บทความการแลกเปลี่ยนเรียนรู้ทั่วไป   วิทยาศาสตร์ เทคโนโลยี
ผู้เขียน มธุรส ชัยหาญ  วันที่เขียน 1/3/2565 11:22:29  แก้ไขล่าสุดเมื่อ 13/8/2565 19:03:03   เปิดอ่าน 500  ครั้ง | แสดงความคิดเห็น 0  ครั้ง