ชีตสรุป Regex
เลือกเอนจิน regex
เริ่มจากเอนจินที่คุณใช้ ข้อมูลอ้างอิงจะซ่อนไวยากรณ์ที่ใช้ไม่ได้กับตัวเลือกนั้น
ใช้ข้อมูลอ้างอิงแบบโต้ตอบนี้เพื่อเปรียบเทียบไวยากรณ์นิพจน์ทั่วไปก่อนวางลงในโค้ด เลือก JavaScript, PCRE2/PHP, Python re, .NET หรือมุมมองทุกเอนจิน แล้วเลือกหัวข้อและค้นหารายการที่แสดงอยู่ ข้อมูลอ้างอิงจะระบุไวยากรณ์เฉพาะกลุ่ม เพราะโทเค็นที่คอมไพล์ได้ในเอนจินหนึ่งอาจถูกปฏิเสธหรือมีความหมายต่างออกไปในอีกเอนจินหนึ่ง การค้นหาและคัดลอกทำในเบราว์เซอร์ และหน้านี้จะไม่รันแพตเทิร์นกับข้อความของคุณ
วิธีใช้ชีตสรุป Regex
-
1
เลือกเอนจิน
เริ่มจาก JavaScript, PCRE2/PHP, Python re, .NET หรือเปรียบเทียบทั้งหมด มุมมองที่เจาะจงจะตัดรายการที่ใช้กับเอนจินที่เลือกไม่ได้ออก
-
2
เลือกหัวข้อ
เปิดแองเคอร์ คลาสอักขระ ตัวบอกจำนวน กลุ่ม lookaround รูปร่างแพตเทิร์นทั่วไป หรือแฟล็กและตัวเลือก
-
3
ค้นหาและคัดลอกในเครื่อง
ค้นหาโทเค็นและคำอธิบายในหน้า แล้วเลือกโทเค็นเพื่อคัดลอก ข้อความค้นหาไม่ถูกส่งไปยังเซิร์ฟเวอร์และไม่ถูกเพิ่มใน URL
-
4
ตรวจสอบใน runtime จริง
ใช้เอนจิน แฟล็ก และ API ที่ตรงกันในโครงการของคุณเพื่อคอมไพล์และทดสอบนิพจน์สุดท้าย ข้อมูลอ้างอิงนี้อธิบายไวยากรณ์ ไม่ได้ตรวจสอบข้อมูล production
ความเข้ากันได้มีความสำคัญ
นิพจน์ทั่วไปไม่ใช่ภาษาสากลภาษาเดียว ข้อมูลอ้างอิงนี้แยกไวยากรณ์ที่ดูคล้ายกันแต่ย้ายข้ามเอนจินได้ไม่ราบรื่น
| คุณลักษณะ | JavaScript RegExp | PCRE2 / PHP | Python re |
.NET |
|---|---|---|---|---|
| จุดเริ่มต้นสัมบูรณ์ | ไม่มี \A |
\A |
\A |
\A |
| จุดสิ้นสุดสัมบูรณ์ | ไม่มี \z |
\z |
\Z |
\z |
คุณสมบัติ Unicode \p{L} |
ใช้โหมด u หรือ v |
รองรับ | ไม่มีใน re ที่มากับระบบ |
รองรับ |
| การจับภาพแบบมีชื่อ | (?<name>...) |
(?<name>...) หรือ (?P<name>...) |
(?P<name>...) |
(?<name>...) |
| การอ้างอิงย้อนกลับแบบมีชื่อ | \k<name> |
\k<name> หรือ (?P=name) |
(?P=name) |
\k<name> |
| การจับคู่ทั่วทั้งข้อความ | แฟล็ก g พร้อม API จับคู่ |
API ซ้ำ เช่น preg_match_all |
API ซ้ำ เช่น finditer |
API ซ้ำ เช่น Matches |
\d และ \w ต้องระวังเป็นพิเศษ ใน JavaScript \d ยังคงเป็นเลข ASCII 0-9 และ \w ยังคงเป็นอักขระคำ ASCII เป็นหลักแม้เพิ่ม u เอนจินอื่นอาจใช้กฎ Unicode ตามโหมดและการตั้งค่า หากพฤติกรรม Unicode สำคัญ ให้เขียนและทดสอบคุณสมบัติหรือคลาสที่ต้องการอย่างชัดเจน
แองเคอร์และขอบเขต
| โทเค็น | สิ่งที่สื่อ | หมายเหตุการย้ายข้ามเอนจิน |
|---|---|---|
^ |
จุดเริ่มอินพุต หรือจุดเริ่มบรรทัดในโหมดหลายบรรทัด | มีในทั้งสี่กลุ่ม |
$ |
จุดสิ้นสุดอินพุต หรือจุดสิ้นสุดบรรทัดในโหมดหลายบรรทัด | มีในทั้งสี่กลุ่ม แต่รายละเอียดบรรทัดใหม่ท้ายข้อความต่างกัน |
\b |
ขอบเขตคำ | นิยามอักขระคำขึ้นกับเอนจินและโหมด |
\A |
จุดเริ่มต้นสัมบูรณ์ของสตริง | PCRE2, Python และ .NET; ไม่ใช่ JavaScript |
\z |
จุดสิ้นสุดสัมบูรณ์ของสตริง | PCRE2 และ .NET; Python ใช้ \Z |
\Z |
จุดสิ้นสุดสตริงของ Python | PCRE2 และ .NET อาจจับคู่ก่อนบรรทัดใหม่สุดท้าย; ใช้ \z สำหรับจุดสิ้นสุดสัมบูรณ์ |
กลุ่มและ lookaround
| โทเค็น | ความหมาย | ข้อจำกัดสำคัญ |
|---|---|---|
(abc) |
กลุ่มจับภาพ | มีในทั้งสี่กลุ่ม |
(?:abc) |
กลุ่มไม่จับภาพ | มีในทั้งสี่กลุ่ม |
(?<name>abc) |
กลุ่มมีชื่อ | ไวยากรณ์ JavaScript, PCRE2 และ .NET |
(?P<name>abc) |
กลุ่มมีชื่อ | ไวยากรณ์ Python; PCRE2 ยอมรับด้วย |
(?=abc) / (?!abc) |
lookahead บวก / ลบ | มีในทั้งสี่กลุ่ม |
(?<=abc) / (?<!abc) |
lookbehind บวก / ลบ | ทั้งสี่กลุ่มรองรับ แต่ความยาวที่อนุญาตต่างกัน |
Lookbehind เป็นกับดักด้านการย้ายข้ามเอนจินที่พบบ่อย Python re ต้องใช้ lookbehind ที่มีความกว้างคงที่ ส่วนการรองรับ JavaScript ขึ้นกับ runtime ที่คุณนำไปใช้งาน ทดสอบแพตเทิร์นจริงใน runtime ที่เก่าที่สุดที่รองรับ แทนการพึ่งเพียงแถวในชีตสรุป
รูปร่างแพตเทิร์น ไม่ใช่ตัวตรวจสอบที่สมบูรณ์
รายการแพตเทิร์นทั่วไปอธิบายเพียงรูปร่างโดยตั้งใจ ตัวอย่างเช่น ^\d{4}-\d{2}-\d{2}$ ยอมรับ 2026-99-99 และแพตเทิร์นที่มีรูปร่างอีเมลอย่างง่ายไม่อาจใช้มาตรฐานอีเมลครบถ้วนได้ หลังตรวจสอบรูปแบบเบื้องต้น ให้แยกวิเคราะห์วันที่ URL และตัวระบุที่มีโครงสร้างด้วยไลบรารีที่ถูกต้อง
| รูปร่าง | แพตเทิร์นตัวอย่าง | สิ่งที่พิสูจน์ไม่ได้ |
|---|---|---|
| ทศนิยมมีเครื่องหมาย | ^-?\d+(?:\.\d+)?$ |
เครื่องหมายทศนิยมตามโลแคล การจัดกลุ่ม ช่วงตัวเลข หรือความเที่ยงตรง |
| ข้อความรูปร่างอีเมล | ^[\w.+-]+@[\w-]+\.[\w.-]+$ |
ที่อยู่อีเมลที่ส่งถึงได้หรือครบตามมาตรฐาน |
| ข้อความรูปร่าง URL HTTP(S) | ^https?://\S+$ |
URL ที่ปลอดภัย แยกวิเคราะห์ได้ หรือเข้าถึงได้ |
| รูปร่างวันที่ ISO | ^\d{4}-\d{2}-\d{2}$ |
วันที่จริงในปฏิทิน |
| อักขระ slug ASCII | ^[A-Za-z0-9_-]+$ |
กฎตัวพิมพ์ ตัวคั่น หรือคำสงวนของแอปพลิเคชันคุณ |
แฟล็กและตัวเลือก
อย่าคัดลอกแฟล็กโดยไม่ตรวจสอบ API ของโฮสต์ JavaScript เขียน /pattern/g ขณะที่ Python ส่ง re.I หรือ re.X, .NET ใช้ RegexOptions ได้ และ PCRE2/PHP มักใช้ตัวคั่นและตัวปรับท้ายแพตเทิร์น g เป็นแฟล็กการจับคู่ทั่วทั้งข้อความของ JavaScript ไม่ใช่ตัวปรับ PCRE2 โดยทั่วไปการจับคู่ PCRE2 ซ้ำควบคุมผ่าน PHP API โหมดขยาย x ใช้ได้ใน PCRE2, Python และ .NET แต่ไม่ใช่แฟล็ก JavaScript
คำถามที่พบบ่อย
ไม่ นี่คือข้อมูลอ้างอิงไวยากรณ์ที่มีการค้นหาและคัดลอกในเบราว์เซอร์ ใช้ตัวทดสอบ regex และ runtime ของแอปพลิเคชันเพื่อคอมไพล์แพตเทิร์นและทดสอบอินพุตตัวแทน
โทเค็นที่คุ้นเคยบางอย่างย้ายข้ามเอนจินไม่ได้ Python re ที่มากับระบบใช้ (?P<name>…) สำหรับกลุ่มมีชื่อ ส่วน JavaScript ใช้ (?<name>…) และ JavaScript ไม่รองรับแองเคอร์สัมบูรณ์ \A หรือ \z
ไม่ ใน JavaScript \d คือเลข ASCII และ \w เป็นอักขระคำ ASCII เป็นหลักแม้ใช้แฟล็ก u เอนจินอื่นมีโหมดและตัวเลือก Unicode ต่างกัน จึงควรทดสอบพฤติกรรมที่ข้อมูลของคุณต้องการ
ให้ใช้เป็นเพียงการตรวจรูปร่างอย่างเร็วเท่านั้น ตัวอย่างไม่พิสูจน์ว่าอีเมลส่งถึงได้ URL ปลอดภัยหรือเข้าถึงได้ หรือวันที่มีอยู่จริงในปฏิทิน สำหรับกฎ production ให้ใช้ parser หรือตัวตรวจสอบเฉพาะทาง
เครื่องมือที่เกี่ยวข้อง
ตารางอ้างอิง ASCII
ตาราง ASCII ครบตั้งแต่ 0 ถึง 127 พร้อมค่าเลขฐานสิบ ฐานสิบหก ฐานแปด ฐานสอง และรูปแบบการอ้างอิงอักขระแบบตัวเลขของ HTML รวม NUL, LF และ DEL
อ้างอิงตัวอักษร HTML
รายการที่สามารถค้นหาได้ขององค์ประกอบ HTML พร้อมรหัสชื่อและรหัสตัวเลข รวมถึงฟังก์ชันสำเนาด้วยคลิกเดียวสำหรับตัวอักษรพิเศษและสัญลักษณ์ต่างๆ
ตารางอ้างอิงแป้นพิมพ์ลัด
ค้นหาแป้นพิมพ์ลัดเริ่มต้นตามเอกสารของ VS Code, Chrome และ Bash ที่ใช้ GNU Readline บน macOS, Windows และ Linux
ตัวตรวจสอบความถูกต้องของ JSON
ตรวจสอบไวยากรณ์ JSON และตรวจจับเครื่องหมายจุลภาคต่อท้าย เครื่องหมายอัญประกาศที่ผิด คีย์ซ้ำ และโครงสร้างที่ผิดรูปแบบ พร้อมระบุตำแหน่งข้อผิดพลาดอย่างแม่นยำ
ตัวตรวจสอบอีเมล
ตรวจสอบที่อยู่อีเมล: ตรวจไวยากรณ์ RFC 5322 ค้นหา MX เรกคอร์ดแบบเรียลไทม์ พร้อมรายละเอียดส่วนท้องถิ่น โดเมน และความยาว ไม่มีการส่งอีเมลใด ๆ
ตัวลดรูปพีชคณิตบูลีน
ประเมินนิพจน์บูลีนสำหรับทุกชุดอินพุตและดูตารางค่าความจริงที่สมบูรณ์ รองรับตัวแปรสูงสุดห้าตัวและตัวดำเนินการ &, |, !, ^
เครื่องมือนี้มีให้บริการในภาษาอื่น
- Guía rápida de regex [ES]
- Bảng Tra Regex [VI]
- ورقة غش للتعبيرات النمطية [AR]
- 正規表現チートシート [JA]
- Aide-mémoire regex [FR]
- Folha de consulta de regex [PT]
- Regex-lathund [SV]
- 정규식 치트 시트 [KO]
- Lembar Ringkas Regex [ID]
- Regex-Spickzettel [DE]
- Regex-spiekbriefje [NL]
- Ściąga regex [PL]
- Шпаргалка по регулярным выражениям [RU]
- Regex başvuru kılavuzu [TR]
- 正则表达式速查表 [ZH]
- Regex Cheat Sheet [EN]
- Guida rapida alle regex [IT]