Validate by Pattern
validate_regex · validity · any
2026-09-23
กำลังประมวลผล…
validate_regex · validity · any
2026-09-23
ทุกองค์กรมีรูปแบบรหัสของตัวเอง เช่น PO-2026-0012 หรือทะเบียนรถที่ขึ้นต้นด้วยตัวอักษรไทยสองตัว ไม่มี tool สำเร็จรูปสำหรับทุกกฎ เทคนิคนี้จึงให้คุณเขียนกฎเอง แล้วทำเครื่องหมายค่าที่ไม่ผ่านไว้ให้ตรวจต่อ
regex พร้อม flags โดยมี u เป็นค่าเริ่มต้นเพื่อรองรับภาษาไทยfullMatch เปิดอยู่เป็นค่าเริ่มต้น ระบบจะครอบรูปแบบด้วย ^(?:...)$ ให้เอง จึงต้องตรงทั้งค่าfullMatch เมื่อต้องการแค่ "มีส่วนที่ตรง" อยู่ในค่า| Parameter | Type | Default |
|---|---|---|
column | string | — |
action | flag | null | remove_row | "flag" |
newColumnName | string | — |
regex | string | ".*" |
flags | string | "u" |
fullMatch | boolean | true |
import json
import re
def validate_regex(value, pattern, full_match=True):
if value is None:
return None
text = str(value)
source = f'^(?:{pattern})$' if full_match else pattern
return re.search(source, text) is not None
values = ['AB-123', 'xAB-123', 'ไทย', None]
result = {
'full': [validate_regex(v, r'[A-Z]{2}-\d{3}') for v in values],
'partial': [validate_regex(v, r'[A-Z]{2}-\d{3}', full_match=False) for v in values],
}
print(json.dumps(result, ensure_ascii=False))
คอลัมน์ po_number ควรมีรูปแบบ PO-YYYY-NNNN ตั้ง regex เป็น PO-\d{4}-\d{4} เปิด fullMatch แล้วใช้ action แบบ flag เพื่อดูว่ามีกี่แถวที่ไม่ตรง จากนั้นเรียงตามคอลัมน์ผลตรวจเพื่อดูค่าที่ผิดทั้งหมดในที่เดียว ถ้าเป็นรูปแบบเก่าที่ยังใช้ได้ ให้แปลงด้วย find_replace แทนการลบทิ้ง
ใช้ extract_pattern เมื่อต้องการดึงส่วนที่ตรงออกมา ใช้ find_replace เพื่อแก้รูปแบบเดิมให้ถูก และใช้ validate_email หรือ normalize_phone เมื่อกฎเป็นมาตรฐานที่มีอยู่แล้ว