Dalam beberapa tahun kebelakangan ini, dengan populariti Internet dan pengembangan senario aplikasi, semakin ramai pembangun telah mula menggunakan bahasa GO untuk pembangunan program. Dalam bahasa GO, adalah keperluan yang sangat biasa untuk menggunakan ungkapan biasa untuk mengesahkan sama ada input itu sah. Antaranya, mengesahkan sama ada input adalah alamat IPv4 atau IPv6 adalah salah satu keperluan biasa. Artikel ini akan memperkenalkan cara menggunakan ungkapan biasa dalam bahasa GO untuk mengesahkan sama ada input ialah alamat IPv4 atau IPv6.
Alamat IPv4, juga dikenali sebagai alamat Internet Protocol versi 4, ialah nombor perduaan 32-bit, biasanya diwakili sebagai empat nombor perpuluhan, setiap nombor dipisahkan dengan "." Sebagai contoh, 192.168.0.1 ialah alamat IPv4 yang sah.
Alamat IPv6, juga dikenali sebagai alamat Internet Protocol versi 6, ialah nombor perduaan 128-bit, biasanya diwakili sebagai kumpulan lapan nombor perenambelasan, setiap kumpulan dipisahkan dengan ":". Contohnya, 2001:0db8:85a3:0000:0000:8a2e:0370:7334 ialah alamat IPv6 yang sah.
Di bawah, kami akan memperkenalkan cara menggunakan ungkapan biasa untuk mengesahkan alamat IPv4 dan IPv6 masing-masing.
Sahkan alamat IPv4
Dalam bahasa GO, anda boleh menggunakan ungkapan biasa untuk mengesahkan sama ada alamat IPv4 itu sah. Ungkapan biasa alamat IPv4 adalah seperti berikut:
^((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]?)$
Antaranya, kurungan segi empat sama menunjukkan item pilihan, tanda soal menunjukkan bahawa bilangan kejadian item pilihan ialah 0 atau 1, dan kurungan menunjukkan segmen alamat lengkap. Ungkapan biasa sepadan dengan setiap segmen alamat satu demi satu dari kiri ke kanan, dan setiap segmen alamat terdiri daripada nombor antara 0 dan 255. Apabila semua segmen alamat berjaya dipadankan, keseluruhan ungkapan biasa dianggap sebagai padanan yang berjaya, jika tidak, ia dianggap sebagai kegagalan padanan.
Seterusnya, kami menggunakan kod sampel untuk menunjukkan cara menggunakan ungkapan biasa untuk mengesahkan kesahihan alamat IPv4.
package main import ( "fmt" "regexp" ) func main() { ipv4Regex := `^((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]?)$` ipv4Address1 := "192.0.2.1" ipv4Address2 := "255.255.255.255" ipv4Address3 := "256.0.0.1" match1, _ := regexp.MatchString(ipv4Regex, ipv4Address1) match2, _ := regexp.MatchString(ipv4Regex, ipv4Address2) match3, _ := regexp.MatchString(ipv4Regex, ipv4Address3) fmt.Println("IPv4 address 1 is valid: ", match1) fmt.Println("IPv4 address 2 is valid: ", match2) fmt.Println("IPv4 address 3 is valid: ", match3) }
Hasil keluaran:
IPv4 address 1 is valid: true IPv4 address 2 is valid: true IPv4 address 3 is valid: false
Seperti yang anda boleh lihat daripada hasil output, alamat IPv4 1 dan alamat IPv4 2 adalah kedua-dua alamat IPv4 yang sah, manakala alamat IPv4 3 bukanlah alamat IPv4 yang sah.
Sahkan Alamat IPv6
Ungkapan biasa untuk mengesahkan alamat IPv6 adalah lebih rumit sedikit daripada mengesahkan alamat IPv4. Ungkapan biasa alamat IPv6 adalah seperti berikut:
^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:([0-9a-fA-F]{1,4}|:)|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]).){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]).){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$
Juga sepadan dengan setiap segmen alamat satu demi satu dari kiri ke kanan, tetapi format alamat IPv6 jauh lebih kompleks daripada alamat IPv4. Alamat IPv6 yang sah boleh terdiri daripada salah satu bentuk berikut:
Seterusnya, kami juga menggunakan kod sampel untuk menunjukkan cara menggunakan ungkapan biasa untuk mengesahkan kesahihan alamat IPv6.
package main import ( "fmt" "regexp" ) func main() { ipv6Regex := `^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:([0-9a-fA-F]{1,4}|:)|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]).){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]).){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$` ipv6Address1 := "2001:0db8:85a3:0000:0000:8a2e:0370:7334" ipv6Address2 := "2001:db8::1" ipv6Address3 := "2001:db8:::1" ipv6Address4 := "ff02::2" ipv6Address5 := "fe80::1%eth0" ipv6Address6 := "fe80::1234:5678:9abc:def0%3" ipv6Address7 := "::ffff:192.0.2.128" ipv6Address8 := "0:0:0:0:0:0:0:1" match1, _ := regexp.MatchString(ipv6Regex, ipv6Address1) match2, _ := regexp.MatchString(ipv6Regex, ipv6Address2) match3, _ := regexp.MatchString(ipv6Regex, ipv6Address3) match4, _ := regexp.MatchString(ipv6Regex, ipv6Address4) match5, _ := regexp.MatchString(ipv6Regex, ipv6Address5) match6, _ := regexp.MatchString(ipv6Regex, ipv6Address6) match7, _ := regexp.MatchString(ipv6Regex, ipv6Address7) match8, _ := regexp.MatchString(ipv6Regex, ipv6Address8) fmt.Println("IPv6 address 1 is valid: ", match1) fmt.Println("IPv6 address 2 is valid: ", match2) fmt.Println("IPv6 address 3 is valid: ", match3) fmt.Println("IPv6 address 4 is valid: ", match4) fmt.Println("IPv6 address 5 is valid: ", match5) fmt.Println("IPv6 address 6 is valid: ", match6) fmt.Println("IPv6 address 7 is valid: ", match7) fmt.Println("IPv6 address 8 is valid: ", match8) }
Hasil keluaran:
IPv6 address 1 is valid: true IPv6 address 2 is valid: true IPv6 address 3 is valid: false IPv6 address 4 is valid: true IPv6 address 5 is valid: true IPv6 address 6 is valid: true IPv6 address 7 is valid: true IPv6 address 8 is valid: true
Seperti yang anda boleh lihat daripada hasil output, alamat IPv6 1 hingga alamat IPv6 8 adalah semua alamat IPv6 yang sah.
Ringkasan
Menggunakan ungkapan biasa dalam bahasa GO untuk mengesahkan kesahihan alamat IPv4 atau IPv6 boleh dicapai melalui ungkapan biasa. Kami telah memperkenalkan kaedah pengesahan dua alamat di atas, dan kami berharap ia akan membantu perkembangan anda. Apabila menghadapi masalah yang sama, anda boleh merujuk kepada contoh kod dan ungkapan biasa dalam artikel ini untuk melaksanakan pengesahan dengan cepat.
Atas ialah kandungan terperinci Gunakan ungkapan biasa dalam golang untuk mengesahkan sama ada input ialah alamat IPv4 atau IPv6. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!