ตัวอย่างต่อไปนี้จะแสดงการใช้และการสร้างนิพจน์ทั่วไปแบบง่าย แต่ละตัวอย่างจะมีประเภทข้อความที่จะจับคู่ นิพจน์ทั่วไปอย่างน้อย 1 รายการที่ตรงกับข้อความ และหมายเหตุอธิบายเกี่ยวกับการใช้อักขระพิเศษและการจัดรูปแบบ
ข้อสำคัญ: เรารองรับไวยากรณ์ RE2 เท่านั้น ซึ่งแตกต่างจาก PCRE เล็กน้อย โดยค่าเริ่มต้นแล้ว นิพจน์ทั่วไปเป็นข้อมูลที่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่
หมายเหตุ: ใช้ตัวอย่างด้านล่างนี้เป็นจุดเริ่มต้นสำหรับนิพจน์ทั่วไปที่ซับซ้อนยิ่งขึ้น ส่วนการจับคู่คำเดียวนั้น ขอแนะนำให้คุณใช้การตั้งค่าการปฏิบัติตามข้อกำหนดของเนื้อหาหรือเนื้อหาที่ไม่เหมาะสมแทน
ตรงกับวลีทั้งหมดเท่านั้น |
ตัวอย่างการใช้งาน |
จับคู่กับวลี stock tips |
ตัวอย่างนิพจน์ทั่วไป |
ตัวอย่าง 1: (\W|^)stock\stips(\W|$)
ตัวอย่าง 2:(\W|^)stock\s{0,3}tips(\W|$)
ตัวอย่าง 3: (\W|^)stock\s{0,3}tip(s){0,1}(\W|$) |
หมายเหตุ |
- \W จะจับคู่อักขระทั้งหมดที่ไม่ใช่ตัวอักษร ตัวเลข หรือเครื่องหมายขีดล่าง ทำให้ regex ไม่จับคู่อักขระก่อนหน้าหรือหลังวลี
- ในตัวอย่าง 2 \s จะจับคู่อักขระเว้นวรรค และ {0,3} ระบุว่ายอมให้มีอักขระเว้นวรรค 0 ถึง 3 ตัวอยู่ระหว่างคำว่า stock และ tip
- ^ จะจับคู่จุดเริ่มต้นของบรรทัดใหม่ ทำให้ regex สามารถจับคู่วลีถ้าปรากฏที่ต้นบรรทัด โดยไม่มีอักขระใดๆ นำหน้า
- $ จะจับคู่ท้ายบรรทัด ทำให้นิพจน์ทั่วไปจับคู่วลีได้ถ้าปรากฏที่ท้ายบรรทัด โดยไม่มีอักขระใดๆ ต่อท้าย
- ในตัวอย่าง 3 (s) จะจับคู่ตัวอักษร s และ {0,1} ระบุว่ายอมให้มีตัวอักษรนี้ 0 หรือ 1 ครั้งหลังจากคำว่า tip ดังนั้นนิพจน์ทั่วไปจะจับคู่ stock tip และ stock tips อีกวิธีหนึ่งคือใช้อักขระ ? แทน {0,1}
|
ตรงกับคำหรือวลีในรายการ |
ตัวอย่างการใช้งาน |
จับคู่คำหรือวลีในรายการต่อไปนี้
- baloney
- darn
- drat
- fooey
- gosh darnit
- heck
|
ตัวอย่างนิพจน์ทั่วไป |
(?i)(\W|^)(baloney|darn|drat|fooey|gosh\sdarnit|heck)(\W|$) |
หมายเหตุ |
|
ตรงกับคำโดยมีการสะกดหรือสัญลักษณ์พิเศษต่างกัน |
ตัวอย่างการใช้งาน
|
จับคู่คําว่า fast cash กับคําที่ปรับให้ยากต่อการอ่าน (Obfuscation) ซึ่งนักส่งสแปมใช้ เช่น
- f@st c@sh
- f@$t c@$h
- fa$t ca$h
|
ตัวอย่างนิพจน์ทั่วไป |
f[a4@][s5\$][t7] +c[a4@][s5\$]h
|
หมายเหตุ |
- ไม่รวม \W เพื่อให้อักขระอื่นๆ ปรากฏก่อนหรือหลัง fast cash ในรูปแบบอื่นๆ ได้ เช่น นิพจน์ทั่วไปจะยังคงจับคู่ fast cash ในข้อความต่อไปนี้
Fast cash!! หรือ ***f@st ca$h***
- [a4@] จับคู่อักขระ a, 4 หรือ @ ในตำแหน่งอักขระตัวที่สองของคำ ซึ่งบ่งชี้ถึงการแทนที่ตัวอักษรที่นักส่งสแปมมักจะใช้เพื่อหลบเลี่ยงการจับคู่ข้อความธรรมดา
|
ตรงกับอีเมลใดก็ได้จากโดเมนที่ระบุ |
ตัวอย่างการใช้งาน |
จับคู่ที่อยู่อีเมลจากโดเมน yahoo.com, hotmail.com และ gmail.com |
ตัวอย่าง Regex |
(\W|^)[\w.+\-]{0,25}@(yahoo|hotmail|gmail)\.com(\W|$) |
หมายเหตุ |
- \W จะจับคู่อักขระทั้งหมดที่ไม่ใช่ตัวอักษร ตัวเลข หรือเครื่องหมายขีดล่าง ทำให้ regex ไม่จับคู่อักขระก่อนหน้าหรือหลังที่อยู่อีเมล
- ^ จะจับคู่จุดเริ่มต้นของบรรทัดใหม่ ทำให้ regex สามารถจับคู่ที่อยู่ถ้าปรากฏที่ต้นบรรทัด โดยไม่มีอักขระใดๆ นำหน้า
- $ จะจับคู่ท้ายบรรทัด ทำให้นิพจน์ทั่วไปจับคู่อีเมลได้ถ้าปรากฏที่ท้ายบรรทัด โดยไม่มีอักขระใดๆ ต่อท้าย
- [\w.\-] จะจับคู่อักขระของคำใดก็ได้ (a-z, A-Z, 0-9 หรือเครื่องหมายขีดล่าง) เครื่องหมายจุด หรือเครื่องหมายขีดกลาง ซึ่งเป็นอักขระที่ถูกต้องที่ใช้กันโดยทั่วไปมากที่สุดในส่วนแรกของอีเมล \- (หมายถึงขีดกลาง) ต้องอยู่ท้ายสุดในรายการอักขระภายในเครื่องหมายวงเล็บแบบเหลี่ยม
- เครื่องหมาย \ หน้าเครื่องหมายขีดและจุดจะ "ยกเว้น" อักขระเหล่านี้ กล่าวคือ เป็นการระบุว่าเครื่องหมายขีดและจุดไม่ใช่อักขระพิเศษของนิพจน์ทั่วไป คุณไม่จำเป็นต้องยกเว้นเครื่องหมายจุดภายในเครื่องหมายวงเล็บแบบเหลี่ยม
- การจัดรูปแบบ (...) จะรวมกลุ่มโดเมน และอักขระ | ที่คั่นระหว่างโดเมนจะหมายถึง "หรือ"
|
ตรงกับที่อยู่ IP ใดก็ได้ในช่วง |
ตัวอย่างการใช้งาน |
จับคู่ที่อยู่ IP ภายในช่วง 192.168.1.0 ถึง 192.168.1.255 |
ตัวอย่าง Regex |
ตัวอย่าง 1: 192\.168\.1\
ตัวอย่าง 2: 192\.168\.1\.\d{1,3} |
หมายเหตุ |
- เครื่องหมาย \ ก่อนเครื่องหมายจุดจะ "ยกเว้น" เครื่องหมายจุด กล่าวคือ เป็นการระบุว่าเครื่องหมายจุดไม่ใช่อักขระพิเศษของนิพจน์ทั่วไป
- ในตัวอย่าง 1 ไม่มีอักขระตามหลังเครื่องหมายจุดสุดท้าย ดังนั้นนิพจน์ทั่วไปจะจับคู่ที่อยู่ IP ที่เริ่มต้นด้วย 192.168.1. โดยไม่คำนึงถึงตัวเลขที่ตามหลัง
- ในตัวอย่าง 2 \d จะจับคู่ตัวเลขจาก 0 ถึง 9 หลังเครื่องหมายจุดสุดท้าย และ {1,3} ระบุว่ายอมให้มีตัวเลข 1 ถึง 3 ปรากฏหลังจากเครื่องหมายจุดสุดท้าย ในกรณีนี้ นิพจน์ทั่วไปจะจับคู่ที่อยู่ IP ใดก็ตามที่เริ่มต้นด้วย 192.168.1. นิพจน์ทั่วไปนี้ยังจับคู่ที่อยู่ IP ที่ไม่ถูกต้องด้วย เช่น 192.168.1.999
|
ตรงกับรูปแบบที่เป็นตัวเลขและตัวอักษร |
ตัวอย่างการใช้งาน |
จับคู่หมายเลขใบสั่งซื้อของบริษัทคุณ หมายเลขนี้มีรูปแบบต่างๆ ได้มากมายดังนี้
- PO nn-nnnnn
- PO-nn-nnnn
- PO# nn nnnn
- PO#nn-nnnn
- PO nnnnnn
|
ตัวอย่าง Regex |
(\W|^)po[#\-]{0,1}\s{0,1}\d{2}[\s-]{0,1}\d{4}(\W|$) |
หมายเหตุ |
- \W จะจับคู่อักขระทั้งหมดที่ไม่ใช่ตัวอักษร ตัวเลข หรือเครื่องหมายขีดล่าง ทำให้ regex ไม่จับคู่อักขระก่อนหน้าหรือหลังหมายเลขนี้
- ^ จะจับคู่จุดเริ่มต้นของบรรทัดใหม่ ทำให้ regex สามารถจับคู่หมายเลขถ้าปรากฏที่ต้นบรรทัด โดยไม่มีอักขระใดๆ นำหน้า
- $ จะจับคู่ท้ายบรรทัด ทำให้นิพจน์ทั่วไปจับคู่หมายเลขได้ถ้าปรากฏที่ท้ายบรรทัด โดยไม่มีอักขระใดๆ ต่อท้าย
- [#\-] จะจับคู่เครื่องหมายสีเหลี่ยมหรือขีดกลางหลังตัวอักษร po และ {0,1} ระบุว่ายอมให้มีอักขระ 1 ตัวในนั้น 1 ครั้ง หรือไม่มีเลย \- (หมายถึงขีดกลาง) ต้องอยู่ท้ายสุดในรายการอักขระภายในเครื่องหมายวงเล็บแบบเหลี่ยม
- \s จะจับคู่กับการเว้นวรรค และ {0,1} ระบุว่ายอมให้มีการเว้นวรรค 1 จุดหรือไม่มีเลย
- \d จะจับคู่ตัวเลขจาก 0 ถึง 9 และ {2} ระบุว่าจะต้องมีตัวเลข 2 ตัวเท่านั้นที่ปรากฏในตำแหน่งนี้ในหมายเลข
|