คอมพิวเตอร์การเขียนโปรแกรม

PHP (regex) - มันคืออะไร? ตัวอย่างและการตรวจสอบการแสดงออกปกติ

เมื่อทำงานร่วมกับข้อความในการเขียนโปรแกรมภาษาใด ๆ ที่ทันสมัยพัฒนาอย่างต่อเนื่องพบกับวัตถุประสงค์ของการเข้าตรวจสอบเพื่อให้สอดคล้องกับรูปแบบที่ต้องการค้นหาและแทนที่เศษทดสอบและประเภทอื่น ๆ ของการดำเนินงานการประมวลผลของข้อมูลตัวละคร พัฒนาขั้นตอนวิธีการตรวจสอบของคุณเองนำไปสู่การสูญเสียเวลาเข้ากันได้รหัสและความซับซ้อนในการพัฒนาและความทันสมัยของมัน

การพัฒนาอย่างรวดเร็วของอินเทอร์เน็ตและการออกแบบเว็บภาษาที่จำเป็นในการสร้างวิธีการที่หลากหลายและมีขนาดกะทัดรัดของการประมวลผลข้อความที่มีจำนวนเงินขั้นต่ำที่จำเป็นสำหรับรหัสนี้ มันก็ไม่มีข้อยกเว้นและเป็นที่นิยมในหมู่ผู้เริ่มต้นและนักพัฒนามืออาชีพของภาษา PHP ภาษาที่แสดงออกปกติเป็นแม่แบบข้อความที่จะลดความซับซ้อนของงานในการจัดการข้อความและลดสำหรับนับร้อยสาย หลายปัญหาไม่สามารถแก้ไขได้ทั้งหมดโดยไม่ได้

การแสดงผลปกติใน PHP

ภาษา PHP มีสามกลไกสำหรับการทำงานกับการแสดงออกปกติ - «ereg», «mb_ereg»และ«ครรภ์» ที่พบมากที่สุดคืออินเตอร์เฟซ«ครรภ์»ซึ่งมีฟังก์ชั่นให้สามารถเข้าถึงห้องสมุดของการสนับสนุนการแสดงออกปกติ PCRE ที่พัฒนามาสำหรับภาษา Perl ซึ่งรวมอยู่ในแพคเกจของ PHP อายุครรภ์ที่กำลังมองหาฟังก์ชั่นในการจับคู่ข้อความสตริงที่กำหนดตามรูปแบบบางอย่างในภาษาของการแสดงออกปกติ

ข้อมูลพื้นฐานเกี่ยวกับไวยากรณ์

ในฐานะที่เป็นส่วนหนึ่งของบทความสั้น ๆ มันเป็นไปไม่ได้ที่จะอธิบายในรายละเอียดทั้งไวยากรณ์นิพจน์ปกติสำหรับเรื่องนี้มีความเป็นวรรณกรรมพิเศษ เรานำเสนอเพียงองค์ประกอบหลักที่จะแสดงให้โอกาสสำหรับนักพัฒนาและเข้าใจตัวอย่างรหัส

ในการแสดงออก PHP ปกติจะถูกกำหนดอย่างเป็นทางการที่ยากมากและดังนั้นจึงลดความซับซ้อนของคำอธิบาย นิพจน์ปกติเป็นสตริงข้อความ มันประกอบไปด้วยแม่แบบแยกทุ่มเทและปรับปรุงที่ระบุวิธีการที่จะจัดการกับมัน รวมเป็นไปได้ในทางเลือกต่างๆและการเกิดซ้ำของรูปแบบการ

ยกตัวอย่างเช่นในการแสดงออก / \ d {3} - \ d {2} - \ d {2} / m แบ่งเป็น "/" ตามด้วยแม่แบบและสัญลักษณ์«เมตร»คือเครื่องปรับ

ทั้งหมดพลังของการแสดงออกปกติจะถูกเข้ารหัสโดยใช้ตัวอักษร meta metacharacter ภาษาหลักคือทับขวา - "\" มันเปลี่ยนแปลงประเภทของตัวอักษรต่อไปนี้บนตรงข้าม (เช่น. อีดัดแปลงให้เป็นสัญลักษณ์แทนตัวอักษรธรรมดาและในทางกลับกัน) อีก metacharacter ที่สำคัญคือเป็นเส้นตรง«|»ระบุแม่แบบทางเลือก ตัวอย่างอื่น ๆ ของตัวละครเมตา:

^ เริ่มที่วัตถุหรือสตริง
( เริ่ม subpattern
) subpattern End
{ ปริมาณเริ่มต้น
} ปริมาณ End
\ d หลักทศนิยม 0-9
\ D ตัวอักษรใด ๆ ที่ไม่ได้เป็นจำนวน
\ s สัญลักษณ์ที่ว่างเปล่า, พื้นที่, แท็บ
w \ พจนานุกรมสัญลักษณ์

PHP, การประมวลผลการแสดงออกปกติพื้นที่ถือว่าเป็นตัวละครที่ถูกต้องแยกจากกันเพื่อแสดงออกของ XYZ และเอบีซีที่มีความแตกต่าง

subpatterns

ใน PHP subpatterns ปกติด้วยวงเล็บและพวกเขาบางครั้งเรียกว่า "subexpressions" ปฏิบัติหน้าที่ต่อไปนี้:

  1. ทางเลือกในการจัดสรร ตัวอย่างเช่นรูปแบบความร้อน (บาง | นก |) เกิดขึ้นพร้อมกับคำว่า "ร้อน", "ไฟร์เบิร์" และ "ร้อน" และไม่มีวงเล็บมันจะเป็นสตริงที่ว่างเปล่า "นก" และ "ร้อน"

  2. "งดงาม" subpattern ซึ่งหมายความว่าถ้ารูปแบบการจับคู่ substring แล้วผลตอบแทนการแข่งขันทั้งหมด เพื่อความชัดเจนเราให้ตัวอย่าง ได้รับการแสดงออกปกติต่อไปนี้: ผู้ชนะจะได้รับ ((ทอง | ชุบทอง) (เหรียญ | ถ้วย)) - และสตริงสำหรับการแข่งขัน "ผู้ชนะเลิศได้รับเหรียญทอง." นอกจากนี้ยังมีวลีเบื้องต้นผลการค้นหาจะออก "เหรียญทอง", "เหรียญ", "ทอง"

ผู้ประกอบการซ้ำ (kvadrifikatory)

ในการรวบรวมการแสดงออกปกติมักจะเป็นสิ่งที่จำเป็นในการวิเคราะห์การซ้ำซ้อนของตัวเลขและสัญลักษณ์ นี้ไม่ได้เป็นปัญหาที่เกิดขึ้นหากไม่ได้จำนวนมากซ้ำ แต่สิ่งที่จะทำอย่างไรเมื่อเราไม่ทราบจำนวนที่แน่นอนของพวกเขา? ในกรณีนี้มันเป็นสิ่งจำเป็นที่จะใช้ metacharacters พิเศษ

สำหรับคำอธิบายของการเกิดซ้ำที่ใช้ kvadrifikatory - metacharacters เพื่อระบุหมายเลข Kvadrifikatory เป็นสองประเภท:

  • ที่พบบ่อยในวงเล็บ;
  • ลดลง

ปริมาณโดยรวมสัมผัสด้วยจำนวนต่ำสุดและสูงสุดที่อนุญาตองค์ประกอบซ้ำในรูปแบบของสองตัวเลขในวงเล็บเช่นที่ x {2,5} หากจำนวนสูงสุดของการเกิดซ้ำไม่เป็นที่รู้จักอาร์กิวเมนต์ที่สองไม่ได้ระบุ: x {2}

ปริมาณย่อคือสัญลักษณ์ที่พบมากที่สุดของการเกิดซ้ำในการสั่งซื้อเพื่อหลีกเลี่ยงการบรรทุกเกินพิกัดไวยากรณ์ที่ไม่จำเป็น มักจะมีสามตัด:

1. * - ศูนย์หรือซ้ำมากขึ้นซึ่งจะเทียบเท่ากับ {0}

2. + - หนึ่งหรือมากกว่าหนึ่งซ้ำคือ {1} ...

3. ? - ศูนย์หรือเพียงหนึ่งซ้ำ - {0,1}

ตัวอย่าง regex

สำหรับผู้ที่เรียนรู้การแสดงออกปกติตัวอย่าง - ตำราที่ดีที่สุด เราให้ไม่กี่ที่แสดงให้เห็นโอกาสของพวกเขาที่มีขั้นต่ำของความพยายามที่ รหัสทั้งหมดเป็นอย่างเข้ากันได้กับรุ่นของ 4.x PHP และข้างต้น เพื่อให้เข้าใจไวยากรณ์และการใช้งานของคุณสมบัติทั้งหมดภาษาเราขอแนะนำหนังสือโดย J .. Friedl ว่า "การแสดงออกปกติ" ซึ่งพิจารณาอย่างเต็มที่ไวยากรณ์และมีตัวอย่างของการแสดงออกปกติไม่เพียง แต่ PHP แต่ยังสำหรับหลาม, Perl, MySQL, Java, ทับทิมและ C #

การตรวจสอบ E-mail ที่อยู่

งาน มีหน้าอินเทอร์เน็ตที่ผู้เข้าชมจะมีการขอที่อยู่อีเมลเป็น แสดงออกปกติจะต้องตรวจสอบความถูกต้องของที่อยู่ก่อนที่จะส่งข้อความ ตรวจสอบไม่ได้รับประกันว่ากล่องจดหมายที่ระบุจริงที่มีอยู่และได้รับข้อความ แต่วัชพืชออกที่อยู่ผิดที่เห็นได้ชัดก็สามารถ

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

ดังนั้นการแสดงออกที่ทดสอบอีเมลที่ถูกต้องควรตรวจสอบเงื่อนไขต่อไปนี้:

  1. การปรากฏตัวในเส้นสตาร์ท @ สัญลักษณ์และไม่มีช่องว่าง
  2. ส่วนโดเมนของที่อยู่ของสัญลักษณ์ @ ที่มีอักขระที่ถูกต้องสำหรับชื่อโดเมน เช่นเดียวกับชื่อของผู้ใช้
  3. เมื่อตรวจสอบชื่อผู้ใช้ที่มีความจำเป็นต้องตรวจสอบสถานะของตัวอักษรพิเศษเช่นเครื่องหมายวรรคตอนหรือเส้นแนวตั้ง สัญลักษณ์ดังกล่าวอาจเป็นอันตรายและสามารถที่มีอยู่ในประเภทดังกล่าวของการโจมตีที่ SQL ฉีด หลีกเลี่ยงการอยู่
  4. ชื่อผู้ใช้ให้มีเพียงจุดหนึ่งซึ่งอาจจะไม่เป็นตัวอักษรตัวแรกหรือตัวสุดท้ายในสตริง
  5. ชื่อโดเมนต้องมีอย่างน้อยสองคนและไม่เกินหกตัวอักษร

ตัวอย่างคำนึงทั้งหมดของเงื่อนไขเหล่านี้สามารถเห็นได้ในรูปต่อไปนี้

การตรวจสอบของ URL ที่

งาน ตรวจสอบว่าสตริงข้อความที่ระบุเป็นที่ถูกต้อง ที่อยู่ URL อีกครั้งหนึ่งที่เราทราบว่าการแสดงออกปกติการตรวจสอบ URL ที่สามารถดำเนินการในรูปแบบต่างๆ

การตัดสิน รุ่นสุดท้ายของเรามีดังนี้:

/^(https?:\/\/)?([\da-z\.-]+)\.([az\.]{2,6})([\/\w \ .-] *) * \ /? $ /

ตอนนี้วิเคราะห์ส่วนประกอบของในรายละเอียดมากขึ้นโดยใช้การวาดภาพ

เรียกร้อง 1 ก่อน URL ที่ไม่ควรมีตัวอักษรใด
เรียกร้อง 2 ตรวจสอบสถานะของคำนำหน้าบังคับ«http»
ข้อ 3 จะต้องมีสัญลักษณ์ไม่มี
เรียกร้อง 4 หากมี«s»จุด URL เพื่อการเชื่อมต่อที่ปลอดภัย«https»
เรียกร้อง 5 ส่วนที่จำเป็นของ "//"
เรียกร้อง 6 ไม่มีตัวอักษร
พี. 7-9 การตรวจสอบ โดเมนระดับแรก และการปรากฏตัวของจุด
p.10-13 ยืนยันโดเมนของการเขียนในระดับที่สองและจุด
p.14-17

URL โครงสร้างไฟล์ - ชุดของตัวเลขตัวอักษรขีดเส้นประจุดและเฉือนที่สิ้นสุด

ตรวจสอบหมายเลขบัตรเครดิต

งาน คุณจำเป็นต้องใช้การตรวจสอบของจำนวนบัตรเครดิตเข้ามาของระบบการชำระเงินที่พบมากที่สุด แตกต่างเพียงสำหรับบัตร วีซ่าและมาสเตอร์การ์ด

การตัดสิน เมื่อมีการสร้างการแสดงออกที่คุณจำเป็นต้องคำนึงถึงความเป็นไปได้ของการปรากฏตัวของช่องว่างในห้องพักการป้อนข้อมูล ตัวเลขบนแผนที่จะถูกแบ่งออกเป็นกลุ่มสำหรับการอ่านง่ายขึ้นและคำสั่ง ดังนั้นจึงเป็นธรรมชาติที่คนสามารถพยายามที่จะใส่ตัวเลขในลักษณะนี้ (เช่นจ. ใช้ช่องว่าง)

เขียนแสดงออกสากลที่คำนึงถึงช่องว่างที่เป็นไปได้หรือยัติภังค์มีความซับซ้อนมากกว่าเพียงแค่การทิ้งตัวละครทุกตัวยกเว้นตัวเลข ดังนั้นเราจึงแนะนำให้ใช้สัญลักษณ์แทนการแสดงออก / D ที่เอาตัวละครทุกตัวยกเว้นตัวเลข

ตอนนี้คุณสามารถไปที่เลขที่เช็ค ทุก บริษัท ผู้ออกบัตรเครดิตใช้รูปแบบที่ไม่ซ้ำกันจำนวน ในตัวอย่างจะถูกนำมาใช้และลูกค้าไม่จำเป็นต้องใส่ชื่อของ บริษัท - มันถูกกำหนดโดยจำนวน บัตรวีซ่ามักเริ่มต้นด้วยหมายเลข 4 และมีความยาว 13 หรือ 16 หลัก มาสเตอร์การ์ดจะเริ่มขึ้นในช่วง 51-55 มีจำนวนยาว 16 เป็นผลให้เราได้รับการแสดงออกต่อไปนี้:

ก่อนที่จะประมวลผลคำสั่งที่สามารถผ่านการทดสอบต่อไปตัวเลขสุดท้ายของหมายเลขซึ่งคำนวณโดยใช้อัลกอริทึม Luhn

หมายเลขโทรศัพท์ตรวจสอบ

งาน การตรวจสอบความถูกต้องของหมายเลขโทรศัพท์ที่ป้อน

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

+ CCC.NNNNNNNNNNxEEEE ที่:

- C - เป็นรหัสประเทศที่ประกอบด้วยตัวเลข 1-3

- N - จำนวนถึง 14 หลัก

- E - นามสกุลตัวเลือก

พลัสเป็นองค์ประกอบที่ขาดไม่ได้และเครื่องหมาย X เป็นปัจจุบันเมื่อจำเป็นเท่านั้นส่วนขยาย

เป็นผลให้เรามีการแสดงออกต่อไปนี้:

^ \ + [0-9] {1,3 } \ [0-9] {4,14}. (?. x +)? $

ตัวเลขในช่วง

งาน มันเป็นสิ่งจำเป็นเพื่อให้แน่ใจว่าจำนวนเต็มบังเอิญของบางช่วง นอกจากนี้ยังมีความจำเป็นที่จะหาการแสดงออกปกติตัวเลขเท่านั้นจากช่วง

การตัดสิน นี่คือการแสดงออกไม่กี่บางส่วนของกรณีที่พบมากที่สุดคือ:

ตรวจสอบชั่วโมง 1-24 ^ (1 [0-2] | [1-9]) $
วันหนึ่งในเดือนที่ 1-31 ^ (3 [01] | [12] [0-9] | [1-9]) $
วินาทีหรือนาที 0-59 ^ [1-5] [0-9] $
จำนวน 1-100 * (100? | [1-9] [0-9]) $
วันของปี 1-366 ^ (36 [0-6] | 3 [0-5] [0-9] | [12] [0-9] {2}? | [1-9] [0-9]) $

ค้นหาที่อยู่ IP

งาน มันเป็นสิ่งจำเป็นเพื่อตรวจสอบว่าสตริงที่กำหนดเป็นที่อยู่ IP ที่ถูกต้องในรูปแบบ IPv4 ในช่วงตั้งแต่ 000.000.000.000-255.255.255.255

การตัดสิน เช่นเดียวกับปัญหาใด ๆ ในภาษา PHP, การแสดงออกปกติมีหลาย varintov ตัวอย่างเช่นนี้:

ตรวจสอบออนไลน์ของการแสดงออก

ตรวจสอบ regex อย่างถูกต้องสำหรับผู้เริ่มต้นอาจเป็นเรื่องยากเพราะความซับซ้อนของไวยากรณ์ซึ่งแตกต่างจาก "ปกติ" การเขียนโปรแกรมภาษา เพื่อแก้ปัญหานี้มีหลายสำนวนที่ทดสอบออนไลน์ที่ทำให้ง่ายต่อการตรวจสอบความถูกต้องของแม่แบบที่คุณสร้างขึ้นในข้อความจริง โปรแกรมเมอร์ที่จะเข้าสู่การแสดงออกและการตรวจสอบข้อมูลและทันทีที่เห็นผลของการประมวลผล มักจะมีในปัจจุบันส่วนการอ้างอิงซึ่งรายละเอียดของการแสดงผลปกติตัวอย่างและความแตกต่างของการดำเนินงานสำหรับภาษาขยายมากที่สุด

แต่การที่จะไว้วางใจอย่างเต็มที่ผลการบริการออนไลน์ไม่แนะนำสำหรับนักพัฒนาทุกคนที่ใช้ PHP นิพจน์ทั่วไปเป็นลายลักษณ์อักษรและตรวจสอบในคนยกวุฒิการศึกษาและรับประกันกรณีที่ไม่มีข้อผิดพลาด

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 th.unansea.com. Theme powered by WordPress.