30 Snipet Kod Regex yang berguna untuk Pembangun Web
Ungkapan tetap adalah alat yang berkuasa yang harus dilakukan di setiap alat pengikat alat. Mereka boleh menandingi rentetan watak berdasarkan parameter yang sangat kompleks, yang boleh menjimatkan banyak masa apabila membina laman web dinamik.
Pembangun laman web menghadapi tugas yang berbeza daripada pemaju perisian tetapi banyak asas kod yang sama kekal. Ungkapan biasa (atau regex) mempunyai a lengkung pembelajaran awal yang curam, tetapi mereka boleh sangat kuat apabila digunakan dengan betul.
Bahagian yang paling rumit ialah mempelajari sintaks dan belajar cara menulis kod regex anda sendiri dari awal. Untuk menjimatkan masa saya telah menganjurkan 30 coretan kod regex yang berbeza yang boleh anda masukkan ke dalam projek pembangunan. Dan sejak regex tidak terhad kepada bahasa tunggal, anda boleh menggunakan coretan ini dari apa saja JavaScript kepada PHP atau Python.
1. Kekuatan Kata Laluan
^ (? =. * [AZ]. [AZ]) (? =. * [! @ # $ & *]) (? =. * [0-9]. * [0-9]) (? . * [az]. * [az]. * [az]). 8 $
Memeriksa kekuatan kata laluan seringkali subjektif sehingga tidak ada jawapan mutlak yang betul. Tetapi saya rasa cuplikan regex ini adalah titik permulaan yang bagus jika anda tidak mahu menulis pemeriksa kekuatan kata laluan anda sendiri dari awal. (Sumber)
2. Warna Hexadecimal
\ # ([a-fA-F] | [0-9]) 3, 6
Bidang pembangunan web adalah di mana-mana dengan kod warna hex. Coretan regex ini boleh digunakan untuk menarik padanan kod hex dari sebarang rentetan untuk sebarang tujuan. (Sumber)
3. Mengesahkan Alamat E-mel
/[A-Z0-9._%+-]+@[A-Z0-9-]+.+.[A-Z]2.4/igm
Salah satu tugas yang paling biasa untuk pemaju adalah untuk memeriksa sama ada rentetan diformat dalam gaya alamat e-mel. Terdapat banyak variasi yang berbeza untuk menyelesaikan tugas ini, jadi pautan SitePoint ini menawarkan dua coretan kod yang berbeza untuk menyemak sintaks e-mel terhadap rentetan. (Sumber)
4. Alamat IPv4
/\b(?)(?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]?) \ B /
Sama seperti alamat e-mel adalah alamat IP tipikal yang digunakan untuk mengenal pasti komputer tertentu yang mengakses Internet. Ungkapan biasa ini akan memeriksa rentetan untuk melihat apakah ia mengikuti sintaks alamat IPv4. (Sumber)
5. Alamat IPv6
(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 : [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]))
Sebagai alternatif, anda mungkin mahu menyemak alamat untuk sintaks IPv6 yang lebih baru dengan coretan regex yang lebih maju ini. Perbezaannya adalah kecil walaupun penting dalam pembangunan. (Sumber)
6. Beribu-ribu Separator
/ \ d 1,3 (? = (\ d 3) + (?! \ d)) / g
Sistem penomboran tradisional memerlukan koma, tempoh, atau tanda lain setiap angka ketiga dalam bilangan yang lebih besar. Kod regex ini beroperasi pada mana-mana nombor dan akan memohon sebarang tanda yang anda pilih untuk setiap digit ketiga yang berpisah menjadi beribu-ribu, berjuta-juta, dll. (Source)
7. Menyediakan HTTP ke Hyperlink
jika (! s.match (/ ^ [a-zA-Z] +: \ / \ //)) s = 'http: //' + s;
Sama ada anda bekerja dalam JavaScript, Ruby atau PHP, ungkapan biasa ini dapat membuktikan sangat membantu. Ia akan memeriksa mana-mana rentetan URL untuk melihat sama ada ia mempunyai awalan HTTP / HTTPS, dan jika tidak, lampirkannya dengan sewajarnya. (Sumber)
8. Tarik Domain dari URL
/https?:\/\/(?:[-\w]+\.)?([-\w]+)\.\w+(?:\.\w+)?\/?.*/i
Setiap domain laman web mengandungi protokol awal (HTTP atau HTTPS) dan seringkali subdomain ditambah dengan laluan halaman tambahan. Anda boleh menggunakan coretan ini untuk memotong semua itu dan kembali hanya nama domain tanpa tambahan tambahan. (SourceL
9. Susun Kata Kunci mengikut Perkataan Kata
^ [^ \ s] * $ sepadan dengan tepat kata kunci 1 perkataan ^ [^ \ s] * \ s [^ \ s] * $ sepadan dengan kata kunci 2 kata yang tepat ^ [^ \ s] * \ s [^ \ * Memadankan kata kunci sekurang-kurangnya 2 perkataan (2 dan lebih) ^ ([^ \ s] * \ s) 2 [^ \ s] * $ matches exactly keyword 3-word ^ ([^ \ s] * \ ) 4 [^ \ s] * $ sepadan dengan kata kunci 5 kata-kata dan lebih (longtail)
Pengguna Google Analytics dan Alat Juruweb akan benar-benar menikmati ungkapan biasa ini. Ia boleh menyusun dan menyusun kata kunci berdasarkan bilangan kata yang digunakan dalam carian.
Ini boleh ditentukan secara berangka (iaitu hanya 5 perkataan) atau ia boleh sepadan dengan pelbagai kata (iaitu 2 atau lebih perkataan). Apabila digunakan untuk menyusun data analisis ini adalah satu ungkapan yang kuat. (Sumber)
10. Cari String Base64 Sah dalam PHP
\? php [\ t] eval \ (base64_decode \ (\ '(([A-Za-z0-9 + /] 4) * ([A-Za-z0-9 + /] 3 = | [A-Za-z0-9 + /] 2 ==)?) 1 \ '\) \) \) \;
Jika anda seorang PHP dev maka pada suatu ketika, anda mungkin perlu mengurai melalui kod yang mencari objek biner dikodkan Base64. Coretan ini boleh digunakan untuk semua kod PHP dan akan memeriksa mana-mana rentetan Base64 yang ada. (Sumber)
11. Nombor Telefon Sah
^ \ +? \ d 1,3? [-.]? \ (? (?: \ d 2,3) \)? [-.]? \ d \ d \ d [-.]? \ d \ d \ d \ d $
Pendek, manis, dan tepat. Kod regex ini akan mengesahkan sebarang sintaks nombor telefon tradisi yang berdasarkan terutamanya pada gaya nombor telefon Amerika.
Oleh kerana ini boleh berubah menjadi subjek yang agak rumit saya cadangkan membuat skimming thread Stack ini untuk jawapan yang lebih terperinci. (Sumber)
12. Ruang Whites & Trailing
^ [\ s] + | [\ s] + $
Gunakan coretan kod ini untuk menarik ruang kosong utama / ketinggalan dari rentetan. Ini mungkin bukan masalah besar tetapi kadang-kadang ia boleh menjejaskan output apabila ditarik dari pangkalan data atau digunakan untuk pengekodan dokumen lain. (Sumber)
13. Tarik Sumber Imej)
\< *[img][^\>] * [src] * = * [\ "\ '] 0,1 ([^ \" \' \>] *)
Jika atas sebab tertentu anda perlu mengeluarkan sumber imej terus dari HTML, coretan kod ini adalah penyelesaian yang sempurna. Walaupun ia dapat berjalan lancar di backend, frontend JS devs sebaliknya bergantung pada jQuery's .attr () method untuk frontend. (Sumber)
14. Mengesahkan Tarikh dalam format DD / MM / YYYY
^ (? :( ?: 31 (\ / | - | \.) (?: 0? [13578] | 1 [02])) \ 1 | (? :( ?: 29 | 30) (\ / | - | \\) (?: 0? [1,3-9] | 1 [0-2]) \ 2)) (? :( ?: 1 [6-9] | [2-9] \ d)? \ d 2) $ | ^ (?: 29 (\ / | - | \.) 0? 2 \ 3 (? :(? :( ?: 1 [6-9] | [2-9] \ d )? (?: 0 [48] | [2468] [048] | [13579] [26]) | (? :( ?: 16 | [2468] [048] | [3579] [26]) 00)) )) $ | ^ (?: 0? [1-9] | 1 \ d | 2 [0-8]) (\ / | - | \.) (? :( ?: 0? [1-9]) | (?: 1 [0-2])) \ 4 (? :( ?: 1 [6-9] | [2-9] \ d)? \ D 2) $
Tarikh adalah sukar kerana ia boleh muncul sebagai nombor teks +, atau seperti nombor dengan format yang berbeza. PHP mempunyai fungsi tarikh yang hebat tetapi ini tidak selalu menjadi pilihan terbaik apabila menarik rentetan mentah. Pertimbangkan sebaliknya menggunakan ungkapan biasa yang dibuat untuk sintaks tarikh tertentu ini. (Sumber)
15. Padanan ID Video YouTube
/http:\/\/(?:youtu\.be\/|(?:[az]2,3\.)?youtube\.com\/watch(?:\?|#\!)v =) ([\ w -] 11). * / gi
YouTube telah menyimpan struktur URL yang sama selama bertahun-tahun kerana ia hanya berfungsi. Ia juga merupakan laman perkongsian video yang paling popular di web, jadi video YouTube cenderung untuk memacu lalu lintas yang paling.
Jika anda perlu mengeluarkan ID video YouTube dari URL kod regex ini sempurna dan harus berfungsi dengan sempurna untuk semua varian struktur URL YouTube. (Sumber)
16. ISBN yang sah
/ \ b (?: ISBN (? ::? |))? ((?: 97 [89])? \ d 9 [\ dx]) \ b / i
Buku cetak mengikuti sistem penomboran yang dikenali sebagai ISBN. Ini boleh menjadi agak rumit apabila anda mempertimbangkan perbezaan antara ISBN-10 dan ISBN-13.
Walau bagaimanapun coretan yang luar biasa ini membolehkan anda mengesahkan nombor ISBN dan semak apakah itu ISBN10 atau 13. Semua kod ditulis dalam PHP jadi ini harus membuktikan sangat berguna kepada pemaju web. (Sumber)
17. Semak Kod Zip
^ \ d 5 (?: [- \ s] \ d 4)? $
Pencipta coretan ini bukan sahaja melepaskan karyanya secara percuma, tetapi dia juga mengambil masa untuk menerangkannya. Anda akan mendapati cuplikan ini berguna sama ada anda sepadan dengan kod zip 5 angka biasa atau versi 9 digit yang lebih panjang.
Perlu diingat ini bermaksud terutamanya untuk sistem zip kod Amerika supaya ini mungkin memerlukan pelarasan untuk negara lain. (Sumber)
18. Nama pengguna Twitter sah
/ @ ([A-Za-z0-9 _] 1,15) /
Berikut adalah coretan kod kecil yang hampir sama dengan nama pengguna Twitter yang terdapat dalam rentetan. Ia semak @menyebut sintaks yang sempurna untuk mengimbas secara automatik kandungan tweet (atau tweet). (Sumber)
19. Nombor Kad Kredit
^ (0: [0-9] 12 (?: [0-9] 3)? 5 [1-5] [0-9] 14 | 6 (?: 011 | 5 [ 0-9] [0-9]) [0-9] 12 | 3 [47] [0-9] 13 | 3 (?: 0 [0-5] | [68] [0-9 ]) [0-9] 11 | (?: 2131 | 1800 | 35 \ d 3) \ d 11) $
Mengesahkan nombor kad kredit sering memerlukan platform selamat yang dihoskan di tempat lain dalam talian. Tetapi regex boleh digunakan untuk keperluan minimum nombor kad kredit tipikal.
Senarai kod yang lebih komprehensif untuk kad individu boleh didapati di sini. Ini termasuk Visa, MasterCard, Discover, dan banyak lagi. (Sumber)
20. Cari Atribut CSS
^ \ s * [a-zA-Z \ -] + \ s * [:] 1 \ s [a-zA-Z0-9 \ s. #] + [;] 1
Ia mungkin jarang berlaku untuk menjalankan regex melalui CSS tetapi ia bukan satu keadaan yang sangat ganjil sama ada.
Potongan kod ini boleh digunakan untuk mengeluarkan setiap sifat dan nilai CSS padanan dari pemilih individu. Ia boleh digunakan untuk beberapa sebab, mungkin untuk melihat ketulan CSS atau untuk menghapuskan sifat duplikat. (Sumber)
21. Strip HTML Comments
Jika atas sebab apa pun, anda perlu mengalih keluar semua komen dari blok HTML, ini adalah kod regex untuk digunakan. Bersama-sama dengan ungkapan yang anda akan dapati contoh PHP menggunakan preg_replace. (Sumber)
22. URL Profil Facebook
/(?:http:\/\/)?(?:www\.)?facebook\.com\/(?:(?:\w)*#!\/)?(?:pages\/)? (?: [\ w \ -] * \ /) * ([\ w \ -] *) /
Facebook sangat popular dan telah melalui banyak skema URL yang berbeza. Dalam situasi di mana anda mengambil URL profil dari pengguna, mungkin berguna untuk mengurai rentetan dan mengesahkan bahawa ia berstruktur dengan betul. Coretan ini boleh melakukannya dengan tepat dan ia sesuai untuk semua pautan gaya FB. (Sumber)
23. Semak versi Internet Explorer
^. * MSIE [5-8] (?: \. [0-9] +)? (?!. * Trident \ / [5-9] \. 0). * $
Perpindahan Microsoft ke Edge belum sebulat suara dan banyak orang masih bergantung pada Internet Explorer klasik. Pemaju sering perlu menyemak versi IE untuk mengendalikan ketidakkonsistenan dengan enjin rendering.
Coretan ini boleh digunakan dalam JavaScript untuk menguji ejen penyemak imbas berdasarkan versi Internet Explorer (5-11) yang sedang digunakan. (Sumber)
24. Ekstrak Harga
/(\$[0-9,]+(\.[0-9]2)?)/
Harga datang dalam pelbagai format yang mengandungi perpuluhan, koma, dan simbol mata wang. Ungkapan biasa ini dapat memeriksa semua format yang berbeza ini untuk mengeluarkan harga dari setiap rentetan. (Sumber)
25. Pengepala E-mel Parse
/\b[A-Z0-9._%+-]+@(?:[A-Z0-9-]+\.)+[A-Z]2,6\b/i
Dengan satu baris kod ini, anda boleh mengurai melalui pengepala e-mel untuk menarik keluar “kepada” maklumat dari tajuk. Ia boleh digunakan seiring dengan pelbagai e-mel yang disatukan.
Jika anda memilih untuk mengelakkan regex untuk tugas ini, anda mungkin bergantung pada pustaka parsing. (Sumber)
26. Padankan Filetype Khusus
/^(.*\.(?!(htm|html|class|js)$))?[^.]*$/i
Apabila anda berhadapan dengan pelbagai format fail seperti .xml, .html, dan .js, ia dapat membantu untuk memeriksa fail kedua-dua tempatan dan dimuat naik oleh pengguna. Coretan ini menarik sambungan fail untuk memeriksa sama ada ia sah dari satu siri sambungan yang sah yang boleh diubah sekiranya diperlukan. (Sumber)
27. Padankan String URL
/[-a-ZA-Z0-9@:%_\+.~#?&//=]2,256\.[az]2.4\b(\/[-a-zA-Z0 -9 @:% _ \ +. ~ #? & // =] *)? / Gi
Coretan ini boleh digunakan untuk kedua-dua HTTPS dan rentetan HTTP untuk memeriksa sama ada teks itu hampir sama dengan sintaks domain TLD tradisional. Terdapat juga pelaksanaan mudah regex ini menggunakan RegExp JavaScript. (Sumber)
28. Tambah rel =”tidak ikut” untuk Pautan
((* | (?: www \.)? ', $ follow_list).') ) [^ "] +)" ((?!. * \ brel =) [^>] *) (?: [^>] *)>
Sekiranya anda bekerja dengan sekumpulan kod HTML, boleh mengerikan untuk memohon kerja manual ke dalam tugas berulang. Ungkapan biasa adalah sempurna untuk kesempatan ini dan mereka akan menjimatkan banyak masa.
Coretan ini boleh menarik semua pautan anchor dari blok HTML dan menambahkannya rel =”tidak ikut” atribut kepada setiap elemen. Pemaju yang menulis kod ini cukup baik untuk menerbitkan ungkapan mentah serta contoh kerja dalam PHP.
29. Pertandingan Kueri Media
/ @ media ([^ ] +) \ ([\ s \ S] +?) \ s * / g
Hancurkan pertanyaan media CSS ke dalam parameter dan sifat mereka. Ini dapat membantu anda menganalisis CSS luaran dengan cara yang lebih bersih dengan tumpuan yang lebih langsung tentang bagaimana kod beroperasi. (Sumber)
30. Sintaks Cari Google
/([+-]?(?:'.+?'|".+?"|[^+\-] 1 [^] *)) / g
Anda boleh membina kod regex anda sendiri untuk memanipulasi teks yang boleh dicari menggunakan sintaks tanda dagangan Google. Tanda tambah (+) menandakan kata kunci tambahan dan tanda tolak (-) menandakan kata-kata yang harus diabaikan dan dikeluarkan dari hasil.
Ini coretan yang agak rumit tetapi digunakan dengan betul ia dapat menyediakan asas untuk membina algoritma carian anda sendiri. (Sumber)
Wrap-Up
Laluan untuk menguasai regex adalah panjang tetapi memberi ganjaran jika anda berpegang teguh dengannya. Di luar alat regex biasa cara terbaik untuk belajar adalah melalui pengulangan. Cuba buat aplikasi web yang bergantung pada coretan regex ini untuk mengetahui cara mereka bekerja dalam aplikasi web berfungsi sebenar. Dan jika anda mempunyai coretan lain untuk mencadangkan anda boleh menyiarkannya di kawasan komen di bawah.
Sekarang Baca:
50 Cetakan CSS yang berguna Setiap Pereka Perlu