Ungkapan Biasa ...LOG MASUK

Ungkapan Biasa untuk Pemula kepada PHP

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 biasa

Ungkapan 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:

<?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 '没有匹配到';
	}
?>

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

图片1.png

d Padanan 0-9

<?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 '没有匹配到';
	}
?>

D Semua aksara kecuali 0-9

<?php
    //  \D   匹配出0-9以外的所有字符
	$zz = '/\D/';
	$string = '12124323453453';

	if(preg_match($zz, $string, $matches)){
	    echo '匹配到了,结果为:';
	    var_dump($matches);
	}else{
	    echo '没有匹配到';
	}
?>

w a-z A-Z0-9_

<?php 
	//  \w   匹配a-zA-Z0-9 还有下划线

	$zz = '/\w/';  
	$string = '新中_国万岁呀万岁';
	if(preg_match($zz, $string, $matches)){
	    echo '匹配到了,结果为:';
	    var_dump($matches);
	}else{
	    echo '没有匹配到';
	}
?>

W Bertentangan dengan w

<?php
    //\W  除a-zA-Z0-9_ 以外的所有字符

	$zz = '/\W/';  
	$string = '......';

	if(preg_match($zz, $string, $matches)){
	    echo '匹配到了,结果为:';
	    var_dump($matches);
	}else{
	    echo '没有匹配到';
	}
?>

s sepadan dengan semua aksara ruang kosong

<?php
        //  \s  匹配所有的空白字符
	$zz = '/\s/';
	$string = "中国万
	岁";

	if(preg_match($zz, $string, $matches)){
	    echo '匹配到了,结果为:';
	    var_dump($matches);
	}else{
	    echo '没有匹配到';
	}
?>

S aksara bukan kosong

<?php
	//  \S  匹配非空字符
	$zz = '/\S/';
	$string = "        
          a       ";

	if(preg_match($zz, $string, $matches)){
	    echo '匹配到了,结果为:';
	    var_dump($matches);
	}else{
	    echo '没有匹配到';
	}
?>

[] Julat atom yang ditentukan

<?php
	//  [] 指定原子范围
	$zz = '/[0-5]\w+/';
	$string = '6a';
	$string1 = '1C';
	if(preg_match($zz, $string, $matches)){
	    echo '匹配到了,结果为:';
	    var_dump($matches);
	}else{
	    echo '没有匹配到';
	}

?>

Sukar untuk mengingati w s W S ini. Jadi terdapat persamaan di bawah, dan kesannya adalah sama seperti s w dsb.

图片2.png

+ sepadan dengan watak sebelumnya sekurang-kurangnya sekali

<?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 '没有匹配到';
	}
?>

* Padankan 0 kali atau mana-mana bilangan aksara sebelumnya

<?php
	$zz = '/\w*/';
	$string = "!@!@!!@#@!$@#!";
	//待会儿再试试中间没有0-9的情况
	//$string1 = "!@#!@#!abcABC#@#!";
	if(preg_match($zz, $string, $matches)){
	    echo '匹配到了,结果为:';
	    var_dump($matches);
	}else{
	    echo '没有匹配到';
	}
?>

aksara sebelumnya muncul 0 atau 1 kali, pilihan

<?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 '没有匹配到';
	}
?>

(titik) sepadan dengan semua aksara kecuali n

<?php
    
	$zz = '/gg.+gg/';
	$string = "ABC1ABC";
	if(preg_match($zz, $string, $matches)){
	    echo '匹配到了,结果为:';
	    var_dump($matches);
	}else{
	    echo '没有匹配到';
	}
?>

<. 🎜>|. (bar menegak), atau keutamaan terendah

<?php
        $zz = '/abc|bcd/';
	$string1 = "abccd";
	$string2 = "ggggbcd";

	if (preg_match($zz, $string1, $matches)) {
	    echo '匹配到了,结果为:';
	    var_dump($matches);
	} else {
	    echo '没有匹配到';
	}
?>

Melalui contoh di atas kita dapat lihat:

1 adalah untuk memadankan abccd atau abbcd. Walau bagaimanapun, apabila $string1 dan $string2 dipadankan, hasil padanan adalah abc dan bcd

2. Ia tidak mempunyai keutamaan yang lebih tinggi daripada rentetan yang bersebelahan

^ (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 '没有匹配到';
	}

?>


bahagian seterusnya
<?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 '没有匹配到'; } ?>
babperisian kursus