ชีตสรุป Regex

ขั้นตอน 1 / 3 33%

เลือกเอนจิน regex

เริ่มจากเอนจินที่คุณใช้ ข้อมูลอ้างอิงจะซ่อนไวยากรณ์ที่ใช้ไม่ได้กับตัวเลือกนั้น

เลือกเอนจิน regex
ถัดไป

ใช้ข้อมูลอ้างอิงแบบโต้ตอบนี้เพื่อเปรียบเทียบไวยากรณ์นิพจน์ทั่วไปก่อนวางลงในโค้ด เลือก JavaScript, PCRE2/PHP, Python re, .NET หรือมุมมองทุกเอนจิน แล้วเลือกหัวข้อและค้นหารายการที่แสดงอยู่ ข้อมูลอ้างอิงจะระบุไวยากรณ์เฉพาะกลุ่ม เพราะโทเค็นที่คอมไพล์ได้ในเอนจินหนึ่งอาจถูกปฏิเสธหรือมีความหมายต่างออกไปในอีกเอนจินหนึ่ง การค้นหาและคัดลอกทำในเบราว์เซอร์ และหน้านี้จะไม่รันแพตเทิร์นกับข้อความของคุณ

วิธีใช้ชีตสรุป Regex

  1. 1

    เลือกเอนจิน

    เริ่มจาก JavaScript, PCRE2/PHP, Python re, .NET หรือเปรียบเทียบทั้งหมด มุมมองที่เจาะจงจะตัดรายการที่ใช้กับเอนจินที่เลือกไม่ได้ออก

  2. 2

    เลือกหัวข้อ

    เปิดแองเคอร์ คลาสอักขระ ตัวบอกจำนวน กลุ่ม lookaround รูปร่างแพตเทิร์นทั่วไป หรือแฟล็กและตัวเลือก

  3. 3

    ค้นหาและคัดลอกในเครื่อง

    ค้นหาโทเค็นและคำอธิบายในหน้า แล้วเลือกโทเค็นเพื่อคัดลอก ข้อความค้นหาไม่ถูกส่งไปยังเซิร์ฟเวอร์และไม่ถูกเพิ่มใน URL

  4. 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 เรกคอร์ดแบบเรียลไทม์ พร้อมรายละเอียดส่วนท้องถิ่น โดเมน และความยาว ไม่มีการส่งอีเมลใด ๆ

ตัวลดรูปพีชคณิตบูลีน

ประเมินนิพจน์บูลีนสำหรับทุกชุดอินพุตและดูตารางค่าความจริงที่สมบูรณ์ รองรับตัวแปรสูงสุดห้าตัวและตัวดำเนินการ &, |, !, ^

เครื่องมือนี้มีให้บริการในภาษาอื่น