国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

php 正則表達(dá)示中的原子

原子

原子是正則表達(dá)示里面的最小單位,原子說(shuō)白了就是需要匹配的內(nèi)容。一個(gè)成立的正則表達(dá)示當(dāng)中必須最少要有一個(gè)原子。

所有可見(jiàn)不可見(jiàn)的字符就是原子

說(shuō)明:我們見(jiàn)到的空格、回車(chē)、換行、0-9、A-Za-z、中文、標(biāo)點(diǎn)符號(hào)、特殊符號(hào)全為原子。

在做原子的實(shí)例前我們先來(lái)講解一個(gè)函數(shù),preg_match:

int preg_match ( string $正則 , string $字符串 [, array &$結(jié)果] )

功能:根據(jù)$正則變量,匹配$字符串變量。如果存在則返回匹配的個(gè)數(shù),把匹配到的結(jié)果放到$結(jié)果變量里。如果沒(méi)有匹配到結(jié)果返回0。

注:上面是preg_match常用的主要幾個(gè)參數(shù)。我在上面將另外幾個(gè)參數(shù)沒(méi)有列出來(lái)。因?yàn)?,另外兩個(gè)參數(shù)太不常用了。

我們來(lái)通過(guò)實(shí)驗(yàn)來(lái)證明:

<?php
//定義一個(gè)變量叫zz,放正則表達(dá)示。為了方便大家記憶,如果你英文比較ok,建議把變量名還是寫(xiě)成英文的$pattern。
$zz = '/a/';

$string = 'ddfdjjvi2jfvkwkfi24';

if(preg_match($zz, $string, $matches)){
   echo '匹配到了,結(jié)果為:';
   var_dump($matches);
}else{
   echo '沒(méi)有匹配到';
}

?>

因?yàn)槲蚁M氖瞧ヅ鋋,而$string當(dāng)是是不存在a的,所以不成功。

<?php
$zz = '/wq/';

$string = 'ssssswqaaaaaa';

if(preg_match($zz, $string, $matches)){
   echo '匹配到了,結(jié)果為:';
   var_dump($matches);
}else{
   echo '沒(méi)有匹配到';
}

?>

上面的字符串中s后存在wq,因此匹配成功。

接下來(lái)我們匹配一個(gè)空格試試:

<?php
$zz = '/ /';

$string = 'sssssw aaaaa';

if(preg_match($zz, $string, $matches)){
   echo '匹配到了,結(jié)果為:';
   var_dump($matches);
}else{
   echo '沒(méi)有匹配到';
}

?>

執(zhí)行結(jié)果如下:

QQ截圖20161114135142.png

因上,$string這個(gè)變量的w字符后存在一個(gè)空格。所以匹配成功,輸出了字符串類(lèi)型,長(zhǎng)度為1。只不過(guò)我們的肉眼不可見(jiàn),看不到這個(gè)字符串而已。

特殊標(biāo)識(shí)的原子

原子說(shuō)明
\d匹配一個(gè)0-9
\D除了0-9以外的所有字符
\wa-zA-Z0-9_
\W除了0-9A-Za-z_以外的所有字符
\s匹配所有空白字符\n \t \r 空格
\S匹配所有非空白字符
[ ]指定范圍的原子


這個(gè)個(gè)需要記住,最好達(dá)到默寫(xiě)級(jí)別。記憶的時(shí)候成對(duì)記憶,\d是匹配一個(gè)0-9,那么\D 就是除了0-9以外的所有字符。
上面已經(jīng)說(shuō)明的很清楚了,我們進(jìn)行實(shí)驗(yàn)一步一步對(duì)這些進(jìn)行學(xué)習(xí)。

請(qǐng)你在學(xué)習(xí)的時(shí)候,對(duì)于這些原子務(wù)必達(dá)到默寫(xiě)級(jí)別。因?yàn)?,我們以后做?shí)驗(yàn)的時(shí)候,一點(diǎn)一點(diǎn)你就學(xué)會(huì)了。

\d匹配一個(gè)0-9

<?php
$zz = '/\d/';

$string = '我愛(ài)喝9你愛(ài)不愛(ài)喝';

if(preg_match($zz, $string, $matches)){
   echo '匹配到了,結(jié)果為:';
   var_dump($matches);
}else{
   echo '沒(méi)有匹配到';
}

?>

\D匹配一個(gè)非0-9的值

<?php
$zz = '/\D/';

$string = '121243中23453453';

if(preg_match($zz, $string, $matches)){
   echo '匹配到了,結(jié)果為:';
   var_dump($matches);
}else{
   echo '沒(méi)有匹配到';
}

?>

匹配成功,匹配到了中。因?yàn)樗皇?-9之間的字符。

\w匹配一個(gè)a-zA-Z0-9_

<?php
$zz = '/\w/';

$string = '新中_國(guó)萬(wàn)歲呀萬(wàn)歲';

if(preg_match($zz, $string, $matches)){
   echo '匹配到了,結(jié)果為:';
   var_dump($matches);
}else{
   echo '沒(méi)有匹配到';
}

?>

匹配成功,匹配到了下劃線。

\W匹配一個(gè)非a-zA-Z0-9_

<?php
$zz = '/\w/';

$string = 'afasABCWEQR44231284737';

if(preg_match($zz, $string, $matches)){
   echo '匹配到了,結(jié)果為:';
   var_dump($matches);
}else{
   echo '沒(méi)有匹配到';
}

?>

匹配失敗。因?yàn)?,上面上面全是a-zA-Z0-9_,沒(méi)有非a-zA-Z0-9_。

\s 匹配所有空白字符\n \t \r 空格

<?php
$zz = '/\s/';

$string = "中國(guó)萬(wàn)
歲";

if(preg_match($zz, $string, $matches)){
   echo '匹配到了,結(jié)果為:';
   var_dump($matches);
}else{
   echo '沒(méi)有匹配到';
}

?>

匹配成功,因?yàn)橛幸粋€(gè)回車(chē)。

\S 非空字符

<?php
$zz = '/\s/';

$string = "        
         a       ";

if(preg_match($zz, $string, $matches)){
   echo '匹配到了,結(jié)果為:';
   var_dump($matches);
}else{
   echo '沒(méi)有匹配到';
}

?>

匹配成功。雖然上面有空格,回車(chē)和縮進(jìn)。但是,有一個(gè)非空白字符a。因此,匹配成功。

[] 指定范圍的原子

<?php

$zz = '/[0-5]\w+/';

$string = '6a';

$string1 = '1C';

if(preg_match($zz, $string, $matches)){
   echo '匹配到了,結(jié)果為:';
   var_dump($matches);
}else{
   echo '沒(méi)有匹配到';
}

?>

結(jié)論:
上例中0-5匹配$string失敗,而$string1成功。因?yàn)椋?string中的第一個(gè)數(shù)值為6,不在[0-5]的范圍之內(nèi)。

<?php

$zz = '/[a-zA-Z0-9_]\w/';

$string = 'ab';

$string1 = '9A';

if(preg_match($zz, $string, $matches)){
   echo '匹配到了,結(jié)果為:';
   var_dump($matches);
}else{
   echo '沒(méi)有匹配到';
}

?>

結(jié)論:

$string和$string1都匹配成功。因?yàn)閈w就是[a-zA-Z0-9_]

<?php

$zz = '/[abc]\d+/';

$string = 'a9';

$string1 = 'b1';

$string2 = 'c5';

$string3 = 'd4';


if(preg_match($zz, $string, $matches)){
   echo '匹配到了,結(jié)果為:';
   var_dump($matches);
}else{
   echo '沒(méi)有匹配到';
}

?>

結(jié)論:

$string、$string1、$string2匹配成功,而$string3不成功。因?yàn)?string3超過(guò)了[abc]的范圍,它是從d開(kāi)始的。

[^ 字符] 不匹配指定區(qū)間的字符

<?php

$zz = '/[^0-9A-Za-z_]/';

$string = 'aaaaab311dd';

$string1 = '!$@!#%$#^##';

if(preg_match($zz, $string, $matches)){
   echo '匹配到了,結(jié)果為:';
   var_dump($matches);
}else{
   echo '沒(méi)有匹配到';
}

?>

結(jié)論:

    1.匹配$string不成功,但是匹配$string1的時(shí)候成功。因?yàn)橹欣ㄌ?hào)里面有個(gè)抑揚(yáng)符。

    2.^ 抑揚(yáng)符在中括號(hào)里面的作用是不準(zhǔn)以中括號(hào)里面的字符進(jìn)行匹配。

總結(jié):

原子等價(jià)式
\w[a-zA-Z0-9_]
\W[^a-zA-Z0-9_]
\d[0-9]
\D[^0-9]
\s[ \t\n\f\r]
\S[^ \t\n\f\r]
繼續(xù)學(xué)習(xí)
||
<?php $zz = '/[^0-9A-Za-z_]/'; $string = 'aaaaab311dd'; $string1 = '!$@!#%$#^##'; if(preg_match($zz, $string, $matches)){ echo '匹配到了,結(jié)果為:'; var_dump($matches); }else{ echo '沒(méi)有匹配到'; } ?>
提交重置代碼
章節(jié)
筆記
提問(wèn)
課件
反饋
捐贈(zèng)

php入門(mén)教程之一周學(xué)會(huì)PHP

  • 推薦課程
  • 評(píng)論
  • 問(wèn)答
  • 筆記
  • 課件下載

CL

\W 匹配非 a~z A~Z 0~9 _ 中的代碼有問(wèn)題,把大寫(xiě)的W,寫(xiě)成了小寫(xiě)的w

6年前    添加回復(fù) 0

人事易分°

表達(dá)式?

7年前    添加回復(fù) 0

大白兔

<?php //定義一個(gè)變量叫zz,放正則表達(dá)示。為了方便大家記憶,如果你英文比較ok,建議把變量名還是寫(xiě)成英文的$pattern。 $pattern = '/a/'; $string = 'dadadfsddsdsd'; if(preg_match($pattern, $string, $match)){ echo '匹配成功,結(jié)果:'; print_r($ma

7年前    添加回復(fù) 0

關(guān)于抑揚(yáng)符'^'的用法

[最新 尋覓 beyond 的回答] preg_match()只匹配一次,如果匹配到符合條件的內(nèi)容就立即返回,不再繼續(xù)匹配了,即使后面還有符合條件的。

時(shí)間:7年前

$zz = '/[0-5]\w+/'; 這個(gè)+號(hào)是干嘛用的,為什么后面有的例子里面沒(méi)有?

[最新 路過(guò) 的回答] [0-5]  可以匹配 0-5中的任意一個(gè)\w 匹配包括下劃線的任何單詞字符。等價(jià)于'[A-Za-z0-9_]'。$ 不在范圍+ 標(biāo)識(shí)一次或多次

時(shí)間:7年前

課件暫不提供下載,工作人員正在整理中,后期請(qǐng)多關(guān)注該課程~