ตารางดูด่วนไวยากรณ์ของรูปแบบปกติ

การแสดงลักษณะ (Regular Expression) หรือที่เรียกอีกอย่างว่า กฎการแสดงลักษณะ เป็นรูปแบบข้อความที่ใช้ในการค้นหา แทนที่ และควบคุมข้อความ โดยทั่วไปจะรวมตัวอักษรจาก a ถึง z และอักขระพิเศษบางตัว การใช้งานการแสดงลักษณะมีความหลากหลายมาก โดยเริ่มจาก UNIX และต่อมาได้แก่การใช้อย่างกว้างขวางใน Scala, PHP, C#, Java, C++, Objective-c, Perl, Swift, VBScript, Javascript, Ruby, และ Python. การเรียนรู้การแสดงลักษณะหมายถึงการเรียนรู้รูปแบบการคิดเชิงตรรกะที่มีความยืดหยุ่น การเรียนรู้เพื่อควบคุมสตริงได้อย่างรวดเร็วและง่ายดาย
อักขระการแสดงลักษณะ คำอธิบาย
\ ทำเครื่องหมายให้กับตัวอักษรถัดไปว่าเป็นอักขระพิเศษ หรืออักขระที่มีความหมายเดียว หรือการอ้างอิงย้อนหลัง หรืออักขระหลบแปดตัว เช่น “n” ตรงกับอักขระ “n” และ “\n” ตรงกับการเปลี่ยนบรรทัด “\\” ตรงกับ “\” ในขณะที่ “\(” จะตรงกับ “(
^ ตรงกับตำแหน่งเริ่มต้นของสตริงที่ป้อน ถ้าได้ตั้งค่าคุณสมบัติ Multiline ของวัตถุ RegExp แล้ว ^ ยังตรงกับตำแหน่งหลังจาก “\n” หรือ “\r
$ ตรงกับตำแหน่งจบของสตริงที่ป้อน ถ้าได้ตั้งค่าคุณสมบัติ Multiline ของวัตถุ RegExp แล้ว $ ยังตรงกับตำแหน่งก่อน “\n” หรือ “\r
* ตรงกับอันที่อยู่ก่อนหน้านั้นศูนย์ครั้งหรือมากกว่า เช่น “zo*” สามารถตรงกับ “z” และ “zoo”ได้ * เท่ากับ {0,}.
+ ตรงกับอันที่อยู่ก่อนหน้าหนึ่งครั้งหรือมากกว่า ดังนั้น “zo+” สามารถตรงกับ “zo” และ “zoo” แต่ไม่สามารถตรงกับ “z” ได้ + เท่ากับ {1,}.
? ตรงกับอันที่อยู่ก่อนหน้าเป็นศูนย์ครั้งหรือครั้งเดียว เช่น “do(es)?” สามารถตรงกับ “does” หรือ “do” ใน “does” ได้ ? เท่ากับ {0,1}.
{n} n เป็นจำนวนเต็มไม่เป็นลบ ตรงกับ n ครั้งแน่นอน เช่น “o{2}” ไม่สามารถตรงกับ “Bob” ใน “o” แต่สามารถตรงกับ “food” ใน o สองตัวได้
{n,} n เป็นจำนวนเต็มไม่เป็นลบ ตรงกันอย่างน้อย n ครั้ง เช่น “o{2,}” ไม่สามารถตรงกับ “Bob” ใน “o” แต่สามารถตรงกับ “foooood” ใน o ทั้งหมด “o{1,}” เท่ากับ “o+” และ “o{0,}” เท่ากับ “o*
{n,m} m และ n เป็นจำนวนเต็มไม่เป็นลบและ n <= m ต้องตรงกัน n ครั้ง แต่ไม่เกิน m ครั้ง เช่น “o{1,3}” จะตรงกับ o สามตัวแรกใน “fooooood” “o{0,1}” เท่ากับ “o?” ต้องอยู่ระหว่าง จำนวน n และ m ห้ามมีช่องว่างคั่นกลาง.
? เมื่ออักขระนี้อยู่ข้างหลังตัวบ่งชี้อื่น ( *, +, ?, {n}, {n,}, {n,m} ) การจับคู่ จะเป็นแบบไม่โลภ สำหรับการใช้งานแบบไม่โลภจะจับคู่ที่มีค่าน้อยที่สุดกับสตริงที่ค้นหา โดยค่าเริ่มต้น การจับคู่ที่มีความโลภจะพยายามจับคู่ทั้งมากที่สุดเท่าที่จะเป็นไปได้ สำหรับสตริง “oooo” “o+?” จะตรงกับ “o” หนึ่งตัว ส่วน “o+” จะจับคู่กับ “o” ทั้งหมด
. ตรงกับอักขระใด ๆ ยกเว้น “\n” หากต้องการจับคู่กับอักขระใด ๆ รวมทั้ง “\n” ให้ใช้แบบฟอร์มเช่น “(.|\n)
(pattern) ตรงกับ pattern และดึงการจับคู่ที่เกิดขึ้น การจับคู่ที่ได้สามารถใช้ได้จากชุด Matches ที่เกิดขึ้น ใน VBScript จะใช้ชุด SubMatches ใน JScript จะใช้คุณสมบัติ $0 … $9 หากต้องการตรงกับวงเล็บ ให้ใช้ “\(” หรือ “\)
(?:pattern) ตรงกับ pattern แต่ไม่ดึงค่าผลลัพธ์การจับคู่ กล่าวอีกนัยหนึ่ง นี่คือการจับคู่ที่ไม่ทำการเก็บไว้เพื่อใช้ในภายหลัง มีประโยชน์ในการใช้ตัวบ่งชี้หรือ “(|)” เพื่อรวมส่วนต่าง ๆ ของรูปแบบ เช่น “industr(?:y|ies)” เป็นการแสดงออกที่กระชับกว่าที่เรียกว่า “industry|industries
(?=pattern) การตรวจสอบยืนยันเชิงบวกในตำแหน่งเริ่มต้นของสตริงที่ค้นหา สำหรับสตริงใด ๆ ที่ตรงกับ Pattern นี่คือการจับคู่ที่ไม่เก็บไว้ โดยไม่มีการเก็บไว้ใช้ในภายหลัง เช่น “Windows(?=95|98|NT|2000)” จะตรงกับ “Windows” ใน “Windows2000” แต่จะไม่ตรงกับ “Windows3.1” ใน “Windows” การตรวจสอบไม่ใช้ตัวอักษร นั่นคือหลังจากการจับคู่เสร็จสิ้นให้เริ่มการค้นหาการจับคู่ครั้งต่อไปทันที ไม่ใช่จากตัวอักษรที่รวมการตรวจสอบ
(?!pattern) การตรวจสอบเชิงลบในตำแหน่งเริ่มต้นของสตริงที่ค้นหา สำหรับสตริงใด ๆ ที่ไม่ตรงกับ pattern นี้คือการจับคู่ที่ไม่เก็บไว้ ซึ่งไม่จำเป็นต้องเก็บไว้ใช้งานในภายหลัง เช่น “Windows(?!95|98|NT|2000)” สามารถตรงกับ “Windows3.1” ใน “Windows” แต่ไม่สามารถตรงกับ “Windows2000” ใน “Windows” การตรวจสอบไม่ใช้อักขระเช่นกัน กล่าวอีกนัยหนึ่งหลังจากการจับคู่เสร็จสิ้น ค้นหาการจับคู่ครั้งถัดไปทันที ไม่ใช่จากตัวอักษรที่ร่วมตรวจสอบ
(?<=pattern) การตรวจสอบยืนยันเชิงลบย้อนกลับ ในลักษณะเดียวกับการตรวจสอบยืนยันเชิงบวก แต่ในทิศทางที่ตรงกันข้าม เช่น “(?<=95|98|NT|2000)Windows” สามารถตรงกับ “2000Windows” ใน “Windows” แต่ไม่สามารถตรงกับ “3.1Windows” ใน “Windows
(?<!pattern) การตรวจสอบเชิงลบย้อนกลับ ในลักษณะเดียวกับการตรวจสอบเชิงลบ แต่ในทิศทางที่ตรงกันข้าม เช่น “(?<!95|98|NT|2000)Windows” จะตรงกับ “3.1Windows” ใน “Windows” แต่จะไม่ตรงกับ “2000Windows” ใน “Windows
x|y ตรงกับ x หรือ y เช่น “z|food” ตรงกับ “z” หรือ “food” “(z|f)ood” ตรงกับ “zood” หรือ “food
[xyz] กลุ่มอักขระ ตรงกับอักขระใด ๆ ที่มีอยู่ในวงเล็บ เช่น “[abc]” สามารถจับคู่ได้กับ “plain
[^xyz] กลุ่มอักขระลบ ตรงกับอักขระใด ๆ ที่ไม่มีอยู่ในวงเล็บ เช่น “[^abc]” สามารถตรงกับ “plain” ใน “p
[a-z] ช่วงอักขระ ตรงกับอักขระใด ๆ จากช่วงที่กำหนด เช่น “[a-z]” สามารถจับคู่ตัวอักษรตัวพิมพ์เล็กตั้งแต่ “a” ถึง “z
[^a-z] ช่วงอักขระลบ ตรงกับอักขระใด ๆ ที่ไม่อยู่ในช่วงที่กำหนด เช่น “[^a-z]” สามารถจับคู่กับอักขระที่ไม่อยู่ระหว่าง “a” ถึง “z
\b ตรงกับขอบเขตของคำ กล่าวคือ ตรงกับตำแหน่งระหว่างคำกับช่องว่าง เช่น “er\b” ตรงกับ “never” ใน “er” ได้ แต่ไม่ตรงกับ “verb” ใน “er
\B ตรงกับไม่ใช่ขอบเขตของคำ “er\B” สามารถตรงกับ “verb” ใน “er” ได้ แต่ไม่สามารถตรงกับ “never” ใน “er” ได้
\cx ตรงกับอักขระควบคุมที่ระบุโดย x เช่น \cM จะตรงกับ Control-M หรืออักขระกลับ “c” จะถูกมองว่าเป็นการแสดงลักษณะ
\d ตรงกับอักขระตัวเลข เท่ากับ [0-9]
\D ตรงกับอักขระที่ไม่ใช่ตัวเลข เท่ากับ [^0-9]
\f ตรงกับการเปลี่ยนหน้า เท่ากับ \x0c และ \cL
\n ตรงกับอักขระการเปลี่ยนบรรทัด เท่ากับ \x0a และ \cJ
\r ตรงกับอักขระการกลับบรรทัด เท่ากับ \x0d และ \cM
\s ตรงกับอักขระว่างใด ๆ รวมถึงช่องว่าง อักขระแท็บ การเปลี่ยนหน้า ฯลฯ เท่ากับ [ \f\n\r\t\v]
\S ตรงกับตัวอักษรที่ไม่ว่าง เท่ากับ [^ \f\n\r\t\v]
\t ตรงกับอักขระแท็บ เท่ากับ \x09 และ \cI
\v ตรงกับอักขระแท็บแนวตั้ง เท่ากับ \x0b และ \cK
\w ตรงกับอักขระคำใด ๆ รวมทั้งอักขระขีดเส้นใต้ เท่ากับ “[A-Za-z0-9_]
\W ตรงกับอักขระที่ไม่ใช่อักขระคำ เท่ากับ “[^A-Za-z0-9_]
\xn ตรงกับ n, โดยที่ n คือค่าที่มีการหลบสี่เหลี่ยมที่เป็นเลขฐานสิบหก เช่น “\x41” จะตรงกับ “A” “\x041” เท่ากับ “\x04&1” สามารถใช้รหัส ASCII ในการแสดงลักษณะได้
\num ตรงกับ num, โดยที่ num เป็นจำนวนเต็มบวก สำหรับการอ้างอิงในการจับคู่ที่ได้รับ เช่น “(.)\1” จะตรงกับอักขระที่เป็นตัวเหมือนกันสองตัว
\n บ่งชี้ค่าที่ถูกแปลงแบบแปดหรือการอ้างอิงย้อนหลัง ถ้า n มีอยู่ก่อนหน้านี้ อย่างน้อย n อันที่ได้เป็นการอ้างอิงย้อนหลัง ถ้า n เป็นหมายเลขแปด (0-7) จะเป็นค่าแปด
\nm บ่งชี้ค่าที่ถูกแปลงแปดหรือการอ้างอิงย้อนหลัง ถ้า nm จะต้องมีอยู่ก่อนหน้านี้อย่างน้อย nm อัน ถ้า n อยู่ที่ m เป็นการอ้างอิงที่ไม่มีมาก่อน ถ้าทั้งสองเป็นตัวเลขฐานแปดก็จะจับคู่ค่าแปดที่ถูกแปลงเป็นตัวเลข
\nml ถ้า n เป็นเลขฐานแปด (0-3) ฝ่าย m กับ l เป็นเลขฐานแปด (0-7) จะตรงกับค่าที่ถูกแปลงแปดเป็น nm.
\un ตรงกับ n, โดยที่ n คืออักขระ Unicode ที่ใช้ตัวเลขฐานสิบหกสี่หลัก เช่น \u00A9 ตรงกับสัญลักษณ์ลิขสิทธิ์ (©)
การแสดงลักษณะที่นิยมใช้
ชื่อผู้ใช้ /^[a-z0-9_-]{3,16}$/
รหัสผ่าน /^[a-z0-9_-]{6,18}$/
รหัสผ่าน 2 (?=^.{8,}$)(?=.*\d)(?=.*\W+)(?=.*[A-Z])(?=.*[a-z])(?!.*\n).*$ (ต้องประกอบด้วยตัวเลข ตัวอักษรใหญ่ ตัวอักษรเล็ก และอักขระพิเศษ 8 ตัวขึ้นไป)
ค่า Hexadecimal /^#?([a-f0-9]{6}|[a-f0-9]{3})$/
อีเมล /^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/
/^[a-z\d]+(\.[a-z\d]+)*@([\da-z](-[\da-z])?)+(\.{1,2}[a-z]+)+$/ หรือ \w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
URL /^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/ หรือ [a-zA-z]+://[^\s]*
IP Address /((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)/
/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/ หรือ ((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)
HTML Tag /^<([a-z]+)([^<]+)*(?:>(.*)<\/\1>|\s+\/>)$/ หรือ <(.*)(.*)>.*<\/\1>|<(.*) \/>
ลบโค้ด\\ความคิดเห็น (?<!http:|\S)//.*$
จัดการตัวอักษรหลายไบต์ (รวมถึงอักขระภาษาจีน) [^\x00-\xff]
อักขระภาษาจีน [\u4e00-\u9fa5]
ช่วงของอักขระภาษาจีนใน Unicode /^[\u2E80-\u9FFF]+$/
อักขระภาษาจีนและอักขระวรรณยุกต์ (ตัวอักษร) [\u3000-\u301e\ufe10-\ufe19\ufe30-\ufe44\ufe50-\ufe6b\uff01-\uffee]
วันที่ (ปี-เดือน-วัน) (\d{4}|\d{2})-((0?([1-9]))|(1[1|2]))-((0?[1-9])|([12]([1-9]))|(3[0|1]))
วันที่ (เดือน/วัน/ปี) ((0?[1-9]{1})|(1[1|2]))/(0?[1-9]|([12][1-9])|(3[0|1]))/(\d{4}|\d{2})
เวลา (ชั่วโมง:นาที, 24 ชั่วโมง) ((1|0?)[0-9]|2[0-3]):([0-5][0-9])
หมายเลขโทรศัพท์ในจีน (\d{4}-|\d{3}-)?(\d{8}|\d{7})
หมายเลขโทรศัพท์มือถือในจีน 1\d{10}
รหัสไปรษณีย์ในจีน [1-9]\d{5}
หมายเลขบัตรประชาชนในจีน (15 หรือ 18 หลัก) \d{15}(\d\d[0-9xX])?
จำนวนเต็มบวก (จำนวนเต็มบวกหรือศูนย์) \d+
จำนวนเต็มบวก [0-9]*[1-9][0-9]*
จำนวนเต็มลบ -[0-9]*[1-9][0-9]*
จำนวนเต็ม -?\d+
จำนวนทศนิยม (-?\d+)(\.\d+)?
บรรทัดว่าง \n\s*\r หรือ \n\n(editplus) หรือ ^[\s\S ]*\n
หมายเลข QQ [1-9]\d{4,}
ไม่รวมคำว่า abc \b((?!abc)\w)+\b
ตรงกับอักขระว่างที่ต้นและท้าย ^\s*|\s*$
แก้ไขประจำ
ต่อไปนี้คือตัวแทนเปลี่ยนสำหรับภาษาจีนพิเศษบางตัว (editplus)
^[0-9].*\n
^[^第].*\n
^[习题].*\n
^[\s\S ]*\n
^[0-9]*\.
^[\s\S ]*\n
<p[^<>*]>
href="javascript:if\(confirm\('(.*?)'\)\)window\.location='(.*?)'"
<span style=".[^"]*rgb\(255,255,255\)">.[^<>]*</span>
<DIV class=xs0>[\s\S]*?</DIV>

ดัชนีการแสดงลักษณะ - เทคนิคการแสดงลักษณะที่นิยมและไวยากรณ์

การแสดงลักษณะเป็นเครื่องมือประมวลผลข้อความที่มีประสิทธิภาพ หน้าเพจนี้เพื่อให้บริการ ดัชนีการแสดงลักษณะ ที่นิยมใช้ ช่วยให้คุณเข้าใจเกี่ยวกับไวยากรณ์พื้นฐาน ระเบียบธรรมการลักษณะ ย่อยรูปแบบ โหมดที่โลภ และโหมดที่ไม่โลภ ฯลฯ ได้เร็วขึ้น

ไวยากรณ์พื้นฐานของการแสดงลักษณะ

การแสดงลักษณะใช้เพื่ออธิบายกฎต่าง ๆ ของรูปแบบข้อความ พื้นฐานที่พบ ได้แก่ :

เครื่องหมายย่อของการแสดงลักษณะที่นิยมใช้

เครื่องหมายย่อใช้เพื่อเปลี่ยนกฎการจับคู่ของการแสดงลักษณะ โดยทั่วไปมีเครื่องหมายย่อนิยมใช้ดังนี้:

โหมดที่โลภและโหมดที่ไม่โลภ

ในการแสดงลักษณะ จำนวนครั้งจะเป็นค่าเริ่มต้นเชิงโลภ จะพยายามจับคู่มากที่สุด โหมดที่ไม่โลภจะใช้งานโดยการเพิ่ม ? หลังจำนวนครั้ง ด้านล่างคือตัวอย่าง:

ย่อยรูปแบบอักขระและการจัดกลุ่ม

การย่อยรูปแบบในการแสดงลักษณะกำหนดด้วยวงเล็บ เช่น ( ) ใช้เพื่อดึงส่วนที่ตรงกัน ส่วนการจัดกลุ่มทำผ่านสัญลักษณ์ “|” เช่น:

การค้นหาแบบรวดเร็วเกี่ยวกับการแสดงลักษณะ

ต่อไปนี้คือตัวค้นหาแบบรวดเร็วที่เกี่ยวข้องกับการแสดงลักษณะ:

ฟังก์ชัน การแสดงลักษณะ
ตรงกับตัวเลข \d
ตรงกับที่ไม่ใช่ตัวเลข \D
ตรงกับตัวอักษร [a-zA-Z]
ตรงกับอักขระใด ๆ .
ตรงกับอักขระว่าง \s

การใช้งานการแสดงลักษณะ

การแสดงลักษณะใช้งานได้หลากหลายดังต่อไปนี้:

เคล็ดลับในการเรียนรู้การแสดงลักษณะ

ใช้ ดัชนีการแสดงลักษณะ ของเราในตอนนี้ ช่วยให้คุณมีประสิทธิภาพมากขึ้นเมื่อเขียนการแสดงลักษณะ และพัฒนาความสามารถในการจัดการข้อความอย่างมีประสิทธิภาพ!

ประวัติการเข้าชมของคุณ:
เลือกภาษา