Konsep asas
Ungkapan biasa ialah corak teks yang merangkumi kedua-dua aksara biasa (contohnya, huruf antara a dan z) dan aksara khas (dipanggil "metacharacters"). Corak menerangkan satu atau lebih rentetan untuk dipadankan semasa mencari teks.
Pertama sekali, kami mengesyorkan beberapa editor ekspresi biasa
Debuggex: https://www.debuggex.com/
PyRegex:http://www.pyregex.com/
Pakar semula: http://www.regexper.com/
Ungkapan biasa ialah operasi carian dan penggantian rentetan. Ungkapan biasa digunakan secara meluas dalam penyunting teks Contohnya, ungkapan biasa digunakan:
[copy] Semak sama ada teks mengandungi perkataan ciri yang ditentukan
Cari kedudukan perkataan ciri yang sepadan dalam teks
Ekstrak maklumat daripada teks, seperti: subrentetan rentetan
Ubah suai teks
Penerangan: Ungkapan biasa biasanya digunakan untuk dua tugas: 1. Pengesahan, 2. Cari/ganti. Apabila digunakan untuk pengesahan, biasanya perlu menambah ^ dan $ sebelum dan selepas untuk memadankan keseluruhan rentetan untuk disahkan sama ada untuk menambah had ini semasa mencari/menggantikan bergantung pada keperluan carian Selain itu, ia juga mungkin perlu tambah sebelum dan selepas b bukannya ^ dan $. Ungkapan biasa yang biasa digunakan yang disenaraikan dalam jadual ini tidak didahului atau diikuti oleh sebarang sekatan kecuali beberapa. Sila kendalikannya sendiri mengikut keperluan anda.
Pesanan keutamaan
Selepas ungkapan biasa dibina, ia boleh dinilai seperti ungkapan matematik, iaitu, ia boleh dinilai dari kiri ke kanan dan dalam susunan keutamaan. Jadual berikut menyenaraikan susunan keutamaan pelbagai pengendali ungkapan biasa daripada keutamaan tertinggi kepada keutamaan terendah:
操作符 | 描述 |
---|---|
转义符 | |
(), (?:), (?=), [] | 圆括号和方括号 |
*, , ?, {n}, {n,}, {n,m} | 限定符 |
^, $, anymetacharacter | 位置和顺序 |
Buat ungkapan biasa
Membina ungkapan biasa adalah sama seperti mencipta ungkapan matematik. Iaitu, menggunakan pelbagai metakarakter dan pengendali untuk menggabungkan ungkapan kecil untuk mencipta ungkapan yang lebih besar.
Ungkapan biasa boleh dibina dengan meletakkan pelbagai komponen corak ungkapan antara sepasang pembatas.
Untuk JScript, pembatas ialah sepasang aksara garis miring (/) ke hadapan. Contohnya:
/ungkapan/
Untuk VBScript, sepasang tanda petikan ("") digunakan untuk menentukan sempadan ungkapan biasa. Contohnya:
Mari lihat contoh
var re =new RegExp("^[a-zA-Z][a-zA-Z0-9_]{5,19}$");
if(re.test(aaaa)){
alert("Format yang betul");
}lain{
makluman("Ralat format");
}
Komponen ungkapan biasa boleh menjadi satu aksara, koleksi aksara, julat aksara, pilihan antara aksara atau mana-mana gabungan semua komponen ini.
Ungkapan biasa yang biasa digunakan
Ungkapan biasa yang sepadan dengan aksara Cina: [u4e00-u9fa5]
Komen: Memadankan bahasa Cina memang sakit kepala Dengan ungkapan ini, ia akan menjadi lebih mudah
Padankan aksara dwibait (termasuk aksara Cina): [^x00-xff]
Ulasan: Boleh digunakan untuk mengira panjang rentetan (panjang aksara dua bait dikira sebagai 2, dan panjang aksara ASCII dikira sebagai 1)
Ungkapan biasa yang sepadan dengan baris kosong: ns*r
Ulasan: Boleh digunakan untuk memadam baris kosong
Ungkapan biasa yang sepadan dengan teg HTML: <(S*?)[^>]*>.*?1>|<.*?
Komen: Versi yang beredar di Internet terlalu teruk. Versi di atas hanya boleh memadankan sebahagian daripadanya, dan ia masih tidak berkuasa untuk teg bersarang yang kompleks
Ulasan: Ia boleh digunakan untuk memadamkan aksara ruang putih pada permulaan dan penghujung baris (termasuk ruang, tab, suapan borang, dll.), ungkapan yang sangat berguna
Komen: Sangat berguna untuk pengesahan borang
Ulasan: Versi yang beredar di Internet mempunyai fungsi yang sangat terhad
Adakah akaun yang sepadan itu sah (bermula dengan huruf, 5-16 bait dibenarkan, garis bawah alfanumerik dibenarkan): ^[a-zA-Z][a-zA-Z0-9_]{4,15}$
Padankan nombor telefon domestik: d{3}-d{8}|d{4}-d{7}
Padan dengan nombor QQ Tencent: [1-9][0-9]{4,}
Padankan poskod Cina: [1-9]d{5}(?!d)
Kad ID yang sepadan: d{15}|d{18}
Padankan alamat ip: d .d .d .d
Padankan nombor tertentu
^-[1-9]d*$ // Padankan integer negatif
^-?[1-9]d*$ //Padankan integer
^[1-9]d*|0$ // Padankan integer bukan negatif (integer positif 0)
^-[1-9]d*|0$ // Padankan integer bukan positif (integer negatif 0)
^[1-9]d*.d*|0.d*[1-9]d*$ //Padankan nombor titik terapung positif
^-([1-9]d*.d*|0.d*[1-9]d*)$ //Padankan nombor titik terapung negatif
^-?([1-9]d*.d*|0.d*[1-9]d*|0?.0 |0)$ //Padankan nombor titik terapung
^[1-9]d*.d*|0.d*[1-9]d*|0?.0 |0$ //Padankan nombor titik terapung bukan negatif (nombor titik terapung positif 0)
^(-([1-9]d*.d*|0.d*[1-9]d*))|0?.0 |0$ //Padankan nombor titik terapung bukan positif (nombor titik terapung negatif 0)
Komen: Berguna semasa memproses sejumlah besar data, sila beri perhatian kepada pembetulan apabila memohon secara khusus
Padankan rentetan tertentu
[copy]^[A-Za-z] $ //Padankan rentetan yang terdiri daripada 26 huruf Inggeris
^[A-Z] $ // Memadankan rentetan yang terdiri daripada 26 huruf besar Inggeris
^[a-z] $ // Memadankan rentetan yang terdiri daripada 26 huruf kecil Inggeris
^[A-Za-z0-9] $ // Memadankan rentetan yang terdiri daripada nombor dan 26 huruf Inggeris
^w $ // Memadankan rentetan yang terdiri daripada nombor, 26 huruf Inggeris atau garis bawah
Komen: Beberapa ungkapan yang paling asas dan biasa digunakan