1.Pembatas
Apakah pembatas?
Apa yang dipanggil pembatas adalah untuk menetapkan sempadan, dan kandungan hendaklah ditulis dalam sempadan ini
// Ini ialah pembatas dalam ungkapan biasa Ungkapan harus ditulis di tengah daripada // 🎜>
iaitu /a-z/2.Mana-mana aksara selain daripada huruf, nombor dan garis miring ke belakang boleh dibataskan simbol, seperti |, //, {}, !!, dsb., tetapi perlu diambil perhatian bahawa jika tiada istimewa Jika perlu, kita semua menggunakan simbol pembatas sebagai ungkapan biasa
3.
Komposisi ungkapan biasaUngkapan tetap standard terdiri daripada 3 bahagian:
(1). Pemisah
(2). Ungkapan
(3). ungkapan, yang boleh menjadi mana-mana aksara kecuali aksara khas Pembatas yang biasa digunakan "/"
Ekspresi: Ungkapan terdiri daripada beberapa aksara khas (metacharacters ) dan bukan khas ( aksara teks) bentuk
Pengubahsuai: Pengubah suai dalam ungkapan biasa PHP boleh mengubah banyak ciri ungkapan biasa, menjadikan ungkapan biasa lebih sesuai untuk keperluan anda (Nota: Pengubah suai adalah sensitif huruf besar-besaran, yang bermaksud "e" tidak sama dengan "E")
Apakah pengubah suai dalam ungkapan biasa?
Jenis dan pengenalan pengubah suai ungkapan biasa PHP: ◆i: Jika "i" ditambahkan pada pengubah, ungkapan biasa akan membatalkan Sensitiviti huruf besar, i.e. "a" dan "A" adalah sama. ◆m: Mula biasa lalai "^" dan tamat "$" hanya untuk rentetan biasa Jika "m" ditambahkan pada pengubah suai, maka permulaan dan akhir akan merujuk kepada setiap baris rentetan : Permulaan setiap baris ialah "^" dan penghujungnya ialah "$".
◆s: Jika "s" ditambahkan pada pengubah suai, lalai "." bermakna mana-mana aksara kecuali aksara baris baharu akan menjadi mana-mana aksara, termasuk aksara baris baharu!
◆x: Jika pengubah suai ini ditambah, aksara ruang kosong dalam ungkapan akan diabaikan melainkan ia telah dilepaskan.
◆e: Pengubah suai ini hanya berguna untuk penggantian, yang bermaksud ia digunakan sebagai kod PHP sebagai gantian.
◆J: Jika pengubah suai ini digunakan, ungkapan mestilah permulaan rentetan yang dipadankan. Contohnya, "/a/A" sepadan dengan "abcd".
◆E: Bertentangan dengan "m", jika pengubah suai ini digunakan, maka "$" akan sepadan dengan hujung mutlak rentetan, bukan sebelum aksara baris baharu Mod ini dihidupkan secara lalai.
◆U: Ia mempunyai fungsi yang sama seperti tanda soal, dan digunakan untuk menetapkan "mod tamak".
Atom dalam ungkapan biasa
Atom ialah unit terkecil dalam ungkapan biasa Secara terus terang, atom ialah kandungan yang perlu dipadankan. Ungkapan biasa yang sah mesti mengandungi sekurang-kurangnya satu atom Penjelasan: Ruang, pemulangan gerabak, suapan baris, 0-9, A-Za-z, Cina, tanda baca dan simbol khas yang kita lihat semuanya adalah atom. Sebelum melakukan contoh atom, mari kita jelaskan dahulu fungsi, preg_match Sintaks: int preg_match ( string $regular, string $string[, array &$result] ) Di atas ialah preg_match Several parameter utama yang biasa digunakan. Saya tidak menyenaraikan beberapa parameter lain di atas. Kerana dua parameter lain terlalu jarang berlaku. Mari kita buktikan melalui eksperimen: Nota: $zz ialah peraturan ungkapan biasa $rentetan ialah rentetan Contoh ini adalah untuk menentukan sama ada rentetan ini memenuhi ungkapan biasa yang sepadan Jika formula berpuas hati, hasilnya akan keluar Jika tidak berpuas hati, maklumat akan dikeluarkan Atom yang dikenal pasti khusus d Padanan 0-9 D Semua aksara kecuali 0-9 w a-z A-Z0-9_ W Bertentangan dengan w s sepadan dengan semua aksara ruang kosong S aksara bukan kosong [] Julat atom yang ditentukan Sukar untuk mengingati w s W S ini. Jadi terdapat persamaan di bawah, dan kesannya adalah sama seperti s w dsb. + sepadan dengan watak sebelumnya sekurang-kurangnya sekali * Padankan 0 kali atau mana-mana bilangan aksara sebelumnya aksara sebelumnya muncul 0 atau 1 kali, pilihan (titik) sepadan dengan semua aksara kecuali n <. 🎜>|. (bar menegak), atau keutamaan terendah <?php
header("Content-type: text/html; charset=utf-8");//设置编码
$zz = '/a/';
$string = 'ddfdjjvai2jfvkwkfi24';
if(preg_match($zz, $string, $matches)){
echo '匹配到了,结果为:';
var_dump($matches);
}else{
echo '没有匹配到';
}
?>
<?php
header("Content-type: text/html; charset=utf-8");//设置编码
// \d的用法
$zz = '/\d/';
$string = '我爱喝9你爱不爱喝';
if(preg_match($zz, $string, $matches)){
echo '匹配到了,结果为:';
var_dump($matches);
}else{
echo '没有匹配到';
}
?>
<?php
// \D 匹配出0-9以外的所有字符
$zz = '/\D/';
$string = '12124323453453';
if(preg_match($zz, $string, $matches)){
echo '匹配到了,结果为:';
var_dump($matches);
}else{
echo '没有匹配到';
}
?>
<?php
// \w 匹配a-zA-Z0-9 还有下划线
$zz = '/\w/';
$string = '新中_国万岁呀万岁';
if(preg_match($zz, $string, $matches)){
echo '匹配到了,结果为:';
var_dump($matches);
}else{
echo '没有匹配到';
}
?>
<?php
//\W 除a-zA-Z0-9_ 以外的所有字符
$zz = '/\W/';
$string = '......';
if(preg_match($zz, $string, $matches)){
echo '匹配到了,结果为:';
var_dump($matches);
}else{
echo '没有匹配到';
}
?>
<?php
// \s 匹配所有的空白字符
$zz = '/\s/';
$string = "中国万
岁";
if(preg_match($zz, $string, $matches)){
echo '匹配到了,结果为:';
var_dump($matches);
}else{
echo '没有匹配到';
}
?>
<?php
// \S 匹配非空字符
$zz = '/\S/';
$string = "
a ";
if(preg_match($zz, $string, $matches)){
echo '匹配到了,结果为:';
var_dump($matches);
}else{
echo '没有匹配到';
}
?>
<?php
// [] 指定原子范围
$zz = '/[0-5]\w+/';
$string = '6a';
$string1 = '1C';
if(preg_match($zz, $string, $matches)){
echo '匹配到了,结果为:';
var_dump($matches);
}else{
echo '没有匹配到';
}
?>
<?php
header("Content-type: text/html; charset=utf-8");//设置编码
$zz = '/\d+/';
$string = "迪奥和奥迪250都是我最爱";
//待会儿再试试中间没有0-9的情况
//$string = "迪奥和奥迪都是我最爱";
if(preg_match($zz, $string, $matches)){
echo '匹配到了,结果为:';
var_dump($matches);
}else{
echo '没有匹配到';
}
?>
<?php
$zz = '/\w*/';
$string = "!@!@!!@#@!$@#!";
//待会儿再试试中间没有0-9的情况
//$string1 = "!@#!@#!abcABC#@#!";
if(preg_match($zz, $string, $matches)){
echo '匹配到了,结果为:';
var_dump($matches);
}else{
echo '没有匹配到';
}
?>
<?php
$zz = '/ABC\d?ABC/';
$string = "ABC1ABC";
//待会儿再试试中间没有0-9的情况
//$string1 = "ABC888888ABC";
//$string2 = "ABCABC";
if(preg_match($zz, $string, $matches)){
echo '匹配到了,结果为:';
var_dump($matches);
}else{
echo '没有匹配到';
}
?>
<?php
$zz = '/gg.+gg/';
$string = "ABC1ABC";
if(preg_match($zz, $string, $matches)){
echo '匹配到了,结果为:';
var_dump($matches);
}else{
echo '没有匹配到';
}
?>
<?php
$zz = '/abc|bcd/';
$string1 = "abccd";
$string2 = "ggggbcd";
if (preg_match($zz, $string1, $matches)) {
echo '匹配到了,结果为:';
var_dump($matches);
} else {
echo '没有匹配到';
}
?>
^ (circumflex), mesti bermula dengan rentetan selepas ^
<?php $zz = '/^张杰好帅\w+/'; $string1 = "张杰好帅abccdaaaasds"; //$string2没有以张杰好帅开始 $string2 = "帅abccdaaaasds"; if (preg_match($zz, $string1, $matches)) { echo '匹配到了,结果为:'; var_dump($matches); } else { echo '没有匹配到'; } ?>
Kesimpulan berikut ditemui melalui eksperimen:
1 . $string1 berjaya dipadankan, $string2 tidak berjaya dipadankan
2 Kerana $string1 bermula dengan aksara yang ditentukan
3 Dan $string2 tidak bermula dengan aksara selepas ^
4. Terjemahan regex ini bermaksud: bermula dengan "Li Wenkai sangat kacak" diikuti dengan sekurang-kurangnya satu watak a-zA-Z0-9_.
$ (tanda dolar) mesti berakhir dengan aksara sebelum $
<?php $zz = '/\d+努力$/'; $string1 = "12321124333努力"; //$string2 $string2 = "12311124112313力"; if (preg_match($zz, $string1, $matches)) { echo '匹配到了,结果为:'; var_dump($matches); } else { echo '没有匹配到'; } ?>
Nota:
$string1 berjaya dipadankan , dan perlawanan $string2 tidak berjaya. Watak sebelum
$ ialah d+, diikuti dengan usaha Cina.
Oleh itu, perlawanan ini adalah keseluruhannya. d merujuk kepada jenis integer 0-9, dan tanda + mewakili sekurang-kurangnya satu 0-9
{m} yang hanya boleh muncul m kali
<?php $zz = '/喝\d{1,3}酒/'; $string1 = "喝9酒"; //$string2 = "喝988酒"; if (preg_match($zz, $string1, $matches)) { echo '匹配到了,结果为:'; var_dump($matches); } else { echo '没有匹配到'; } ?>
Nota: Dalam contoh di atas, d{1,3}, saya menyatakan bahawa 0-9 hanya boleh muncul sekali, 2 atau 3 kali. Semua masa lain adalah salah
{m,} Sekurang-kurangnya m kali, bilangan maksimum tidak terhad
<?php $zz = '/喝\d{2,}/'; $string1 = "喝9"; //$string2 = "喝98"; //$string3 = "喝98122121"; if (preg_match($zz, $string1, $matches)) { echo '匹配到了,结果为:'; var_dump($matches); } else { echo '没有匹配到'; } ?>
Dalam contoh di atas d{2,}, saya menetapkan bahawa 0-9 selepas minuman sepatutnya muncul sekurang-kurangnya dua kali, dan bilangan maksimum kali tidak terhad. Oleh itu, $string1 tidak berjaya padanan dan $string2 berjaya dipadankan. $string3 adalah perlawanan yang berjaya
Kemahiran ekspresi biasa
Tulis sedikit dan uji sedikit
Oleh kerana kita memerlukan regularisasi yang berterusan, gunakan preg_match Semak sama ada perbandingan itu berjaya. Jika ia berjaya, mari kita tulis titik seterusnya. Sehingga anda selesai menulis dan semua perlawanan berjaya!
Seterusnya mari kita tulis contoh bersepadu ungkapan biasa untuk e-mel
Langkah pertama: Senaraikan semua format e-mel
liwenkai@phpxy.com
iwenkai@ corp.baidu.cm
iwenkai@126.com
_w_k@xxx.com
2345@qq.com
Pertama Padankan watak w+ sebelum @ (kerana 0-9A-Za-z_)
Yang kedua diikuti dengan aksara @
Yang ketiga ditulis [a-zA-Z0-9 -]+ Kerana nama domain utama seperti qq dan 126 tidak boleh
bergaris bawah
corp.baidu Atau 126. Biasanya akhiran e-mel adalah seperti ini. Jadi kita boleh menulisnya sebagai: ([a-zA-Z0-9-]+.){1,2}
Perkara di atas adalah untuk melarikan diri supaya ia mempunyai maksud tersendiri. Tanda kurung mesti diulang sekurang-kurangnya sekali dan paling banyak dua kali.
Hanya ikuti com|cn|org|gov.cn|net|edu.cn dan seterusnya
<?php header("Content-type: text/html; charset=utf-8");//设置编码 $zz = '/\w+@([a-zA-Z0-9-]+.){1,2}(com|cn|org|gov.cn|net|edu.cn)/'; $string1 = "k53981@qq.com"; if (preg_match($zz, $string1, $matches)) { echo '匹配到了,结果为:'; var_dump($matches); } else { echo '没有匹配到'; } ?>