โค้ดอีเมลที่จับคู่ปกติของ PHP จะได้รับการวิเคราะห์โดยละเอียดยิ่งขึ้น ฉันหวังว่าเพื่อนๆ ที่มีคำถามเกี่ยวกับเรื่องนี้จะสามารถตรวจสอบได้
รหัส:
1. <?php
2. if (ereg(“/^[az]([a-z0-9]*[-_.]?[a-z0-9]+)*@([a-z0-9]*[- _]?[a-z0-9]+)+[.][az]{2,3}([.][az]{2})?$/i; ”,$อีเมล)){
3. echo “ที่อยู่อีเมลของคุณถูกต้อง!”;}
4.else{
5. สะท้อน “โปรดลองอีกครั้ง!”;
6. }
7. ?>
รูปแบบชื่อโดเมนสากลเป็นดังนี้:
ชื่อโดเมนประกอบด้วยชุดอักขระเฉพาะ ตัวอักษรภาษาอังกฤษ ตัวเลข และ "-" (เช่น ขีดกลางหรือเครื่องหมายลบ) ในประเทศต่างๆ อย่างไรก็ตาม ไม่สามารถใส่ "-" ที่ขึ้นต้นหรือลงท้ายได้ และ "-" ไม่สามารถปรากฏต่อเนื่องได้ ตัวอักษรในชื่อโดเมนไม่คำนึงถึงขนาดตัวพิมพ์ ชื่อโดเมนสามารถมีความยาวได้สูงสุด 60 ไบต์ (รวมถึงส่วนต่อท้าย .com, .net, .org ฯลฯ)
/^[az]([a-z0-9]*[-_]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0-9 ]+)+[.][az]{2,3}([.][az]{2})?$/i;
/content/i สร้างนิพจน์ทั่วไปที่ไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่
↑ เริ่มการแข่งขัน
$ สิ้นสุดการแข่งขัน
[az] คำนำหน้าอีเมลต้องขึ้นต้นด้วยตัวอักษรภาษาอังกฤษ
([a-z0-9]*[-_]?[a-z0-9]+)* ตรงกับ _a_2, aaa11, _1_a_2 แต่ไม่ตรงกับ a1_, aaff_33a_, a__aa หากเป็นอักขระว่าง ก็จะตรงกัน ตรงกันด้วย , * หมายถึง 0 หรือมากกว่า
* หมายถึงอักขระนำหน้า 0 ตัวขึ้นไป
[a-z0-9]* จับคู่ตัวอักษรหรือตัวเลขภาษาอังกฤษตั้งแต่ 0 ตัวขึ้นไป
[-_]? จับคู่ 0 หรือ 1 "-" เนื่องจาก "-" ไม่สามารถปรากฏติดต่อกันได้
[a-z0-9]+ จับคู่ตัวอักษรหรือตัวเลขภาษาอังกฤษตั้งแต่ 1 ตัวขึ้นไป เนื่องจากไม่สามารถใช้ "-" เป็นจุดสิ้นสุดได้
@ต้องมีอันหนึ่ง@
([a-z0-9]*[-_]?[a-z0-9]+)+ ดูด้านบน ([a-z0-9]*[-_]?[a-z0-9]+)* คำอธิบาย แต่ไม่สามารถเว้นว่างได้ + หมายถึงอย่างน้อยหนึ่งรายการ
[.] ถือว่าอักขระพิเศษ (.) เป็นอักขระธรรมดา
[az]{2,3} จับคู่ตัวอักษรภาษาอังกฤษ 2 ถึง 3 ตัว เช่น com หรือ net เป็นต้น
([.][az]{2})? ตรงกับ 0 หรือ 1 [.][az]{2} (เช่น .cn ฯลฯ) ฉันไม่รู้ว่าส่วนสุดท้ายของ .com.cn โดยปกติจะเป็นตัวเลขสองหลัก ถ้าไม่ โปรดเปลี่ยน {2} เป็น {จำนวนคำเริ่มต้น จำนวนคำลงท้าย}
การแสดงออกทางอีเมล์ที่สมบูรณ์แบบ พร้อมคำอธิบายโดยละเอียด โปรดช่วยทดสอบด้วย! 2. แยกอีเมลในสตริง:
<?php
ฟังก์ชั่น getEmail($str) {
$รูปแบบ = "/([a-z0-9]*[-_.]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0 -9]+)+[.][az]{2,3}([.][az]{2})?/i";
preg_match_all($รูปแบบ,$str,$emailArr);
ส่งคืน $emailArr[0];
-
$emailstr = " [email protected] ฉันไม่ได้มาจาก Mivi ดังนั้นฉันจึงเปิดรายชื่ออีเมล iid: [email protected] และ [email protected] ;.;;, [email protected], [email protected] ";
$emailArr = getEmail($emailstr);
เสียงสะท้อน "<pre>";
print_r($emailArr);
เสียงสะท้อน "</pre>";
-
พิมพ์ดังต่อไปนี้:
อาร์เรย์
-
[0] =>[email protected]
[1] =>[email protected]
[2] =>[email protected]
[3] =>[email protected]
[4] =>[email protected]
-
3. การเปรียบเทียบ: regex ในอันที่สองไม่มี ^ และ $ ในอันแรก