


Gunakan ungkapan biasa dalam golang untuk mengesahkan sama ada input ialah alamat IPv4 atau IPv6
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:
- Lapan nombor perenambelasan daripada 0 hingga ffff, dipisahkan dengan ":" antara setiap dua nombor
- Lapan nombor perenambelasan daripada 0 hingga ffff Nombor perenambelasan ffff, dipisahkan dengan ":" antara setiap dua nombor, tetapi nombor terakhir boleh ditinggalkan
- Satu atau lebih nombor perenambelasan daripada 0 hingga ffff, antara setiap dua nombor Gunakan ":" untuk memisahkan, dan "::" boleh digunakan untuk mewakili singkatan. Singkatan ini hanya boleh muncul sekali dan tidak boleh muncul dalam perenggan pertama atau terakhir
- Alamat IPv6 khas.
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!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Membaca dan menulis fail dengan selamat dalam Go adalah penting. Garis panduan termasuk: Menyemak kebenaran fail Menutup fail menggunakan tangguh Mengesahkan laluan fail Menggunakan tamat masa konteks Mengikuti garis panduan ini memastikan keselamatan data anda dan keteguhan aplikasi anda.

Bagaimana untuk mengkonfigurasi pengumpulan sambungan untuk sambungan pangkalan data Go? Gunakan jenis DB dalam pakej pangkalan data/sql untuk membuat sambungan pangkalan data untuk mengawal bilangan maksimum sambungan serentak;

Rangka kerja Go menyerlah kerana kelebihan prestasi tinggi dan konkurensinya, tetapi ia juga mempunyai beberapa kelemahan, seperti agak baharu, mempunyai ekosistem pembangun yang kecil dan kekurangan beberapa ciri. Selain itu, perubahan pantas dan keluk pembelajaran boleh berbeza dari rangka kerja ke rangka kerja. Rangka kerja Gin ialah pilihan popular untuk membina API RESTful kerana penghalaan yang cekap, sokongan JSON terbina dalam dan pengendalian ralat yang berkuasa.

Perbezaan antara rangka kerja GoLang dan rangka kerja Go ditunjukkan dalam seni bina dalaman dan ciri luaran. Rangka kerja GoLang adalah berdasarkan perpustakaan standard Go dan meluaskan fungsinya, manakala rangka kerja Go terdiri daripada perpustakaan bebas untuk mencapai tujuan tertentu. Rangka kerja GoLang lebih fleksibel dan rangka kerja Go lebih mudah digunakan. Rangka kerja GoLang mempunyai sedikit kelebihan dalam prestasi dan rangka kerja Go lebih berskala. Kes: gin-gonic (rangka Go) digunakan untuk membina REST API, manakala Echo (rangka kerja GoLang) digunakan untuk membina aplikasi web.

Amalan terbaik: Cipta ralat tersuai menggunakan jenis ralat yang ditakrifkan dengan baik (pakej ralat) Sediakan lebih banyak butiran Log ralat dengan sewajarnya Sebarkan ralat dengan betul dan elakkan menyembunyikan atau menyekat ralat Balut seperti yang diperlukan untuk menambah konteks

Data JSON boleh disimpan ke dalam pangkalan data MySQL dengan menggunakan perpustakaan gjson atau fungsi json.Unmarshal. Pustaka gjson menyediakan kaedah kemudahan untuk menghuraikan medan JSON dan fungsi json.Unmarshal memerlukan penuding jenis sasaran kepada data JSON unmarshal. Kedua-dua kaedah memerlukan penyediaan pernyataan SQL dan melaksanakan operasi sisipan untuk mengekalkan data ke dalam pangkalan data.

Cara menangani isu keselamatan biasa dalam rangka kerja Go Dengan penggunaan meluas rangka kerja Go dalam pembangunan web, memastikan keselamatannya adalah penting. Berikut ialah panduan praktikal untuk menyelesaikan masalah keselamatan biasa, dengan kod sampel: 1. SQL Injection Gunakan pernyataan yang disediakan atau pertanyaan berparameter untuk mengelakkan serangan suntikan SQL. Contohnya: constquery="SELECT*FROMusersWHEREusername=?"stmt,err:=db.Prepare(query)iferr!=nil{//Handleerror}err=stmt.QueryR

Fungsi FindStringSubmatch mencari subrentetan pertama dipadankan dengan ungkapan biasa: fungsi mengembalikan hirisan yang mengandungi subrentetan yang sepadan, dengan elemen pertama ialah keseluruhan rentetan dipadankan dan elemen berikutnya ialah subrentetan individu. Contoh kod: regexp.FindStringSubmatch(teks,corak) mengembalikan sekeping subrentetan yang sepadan. Kes praktikal: Ia boleh digunakan untuk memadankan nama domain dalam alamat e-mel, contohnya: e-mel:="user@example.com", pattern:=@([^\s]+)$ untuk mendapatkan padanan nama domain [1].
