คอมพิวเตอร์, การเขียนโปรแกรม
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" ปฏิบัติหน้าที่ต่อไปนี้:
ทางเลือกในการจัดสรร ตัวอย่างเช่นรูปแบบความร้อน (บาง | นก |) เกิดขึ้นพร้อมกับคำว่า "ร้อน", "ไฟร์เบิร์" และ "ร้อน" และไม่มีวงเล็บมันจะเป็นสตริงที่ว่างเปล่า "นก" และ "ร้อน"
"งดงาม" 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 สามารถดำเนินการในรูปแบบที่แตกต่างกันและตัวอย่างในบทความนี้จะไม่เป็นทางเลือกสุดท้ายและมีเพียง ดังนั้นในแต่ละกรณีเราจะให้รายชื่อของความต้องการที่จะต้องนำมาพิจารณาเมื่อการเขียนโปรแกรมและการใช้งานที่เฉพาะเจาะจงขึ้นอยู่กับนักพัฒนา
ดังนั้นการแสดงออกที่ทดสอบอีเมลที่ถูกต้องควรตรวจสอบเงื่อนไขต่อไปนี้:
- การปรากฏตัวในเส้นสตาร์ท @ สัญลักษณ์และไม่มีช่องว่าง
- ส่วนโดเมนของที่อยู่ของสัญลักษณ์ @ ที่มีอักขระที่ถูกต้องสำหรับชื่อโดเมน เช่นเดียวกับชื่อของผู้ใช้
- เมื่อตรวจสอบชื่อผู้ใช้ที่มีความจำเป็นต้องตรวจสอบสถานะของตัวอักษรพิเศษเช่นเครื่องหมายวรรคตอนหรือเส้นแนวตั้ง สัญลักษณ์ดังกล่าวอาจเป็นอันตรายและสามารถที่มีอยู่ในประเภทดังกล่าวของการโจมตีที่ SQL ฉีด หลีกเลี่ยงการอยู่
- ชื่อผู้ใช้ให้มีเพียงจุดหนึ่งซึ่งอาจจะไม่เป็นตัวอักษรตัวแรกหรือตัวสุดท้ายในสตริง
- ชื่อโดเมนต้องมีอย่างน้อยสองคนและไม่เกินหกตัวอักษร
ตัวอย่างคำนึงทั้งหมดของเงื่อนไขเหล่านี้สามารถเห็นได้ในรูปต่อไปนี้
การตรวจสอบของ 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