當前位置:首頁 » 編程語言 » php正則非

php正則非

發布時間: 2025-03-03 14:59:30

1. 求php 的正則表達式 大全

匹配中文字元的正則表達式: [\u4e00-\u9fa5] 評註:匹配中文還真是個頭疼的事,有了這個表達式就好辦了 匹配雙位元組字元(包括漢字在內):[^\x00-\xff] 評註:可以用來計算字元串的長度(一個雙位元組字元長度計2,ASCII字元計1) 匹配空白行的正則表達式:\n\s*\r 評註:可以用來刪除空白行 匹配HTML標記的正則表達式:<(\S*?)[^>]*>.*?</\1>|<.*? /> 評註:網上流傳的版本太糟糕,上面這個也僅僅能匹配部分,對於復雜的嵌套標記依舊無能為 匹配首尾空白字元的正則表達式:^\s*|\s*$ 評註:可以用來刪除行首行尾的空白字元(包括空格、製表符、換頁符等等),非常有用的表達式 匹配Email地址的正則表達式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* 評註:表單驗證時很實用 匹配網址URL的正則表達式:[a-zA-z]+://[^\s]* 評註:網上流傳的版本功能很有限,上面這個基本可以滿足需求 匹配帳號是否合法(字母開頭,允許5-16位元組,允許字母數字下劃線):^[a-zA-Z][a-zA-Z0-9_]{4,15}$ 評註:表單驗證時很實用 匹配國內電話號碼:\d{3}-\d{8}|\d{4}-\d{7} 評註:匹配形式如 0511-4405222 或 021-87888822 匹配騰訊QQ號:[1-9][0-9]{4,} 評註:騰訊QQ號從10000開始 匹配中國郵政編碼:[1-9]\d{5}(?!\d) 評註:中國郵政編碼為6位數字 匹配身份證:\d{15}|\d{18} 評註:中國的身份證為15位或18位 匹配ip地址:\d+\.\d+\.\d+\.\d+ 評註:提取ip地址時有用 匹配特定數字: ^[1-9]\d*$ //匹配正整數 ^-[1-9]\d*$ //匹配負整數 ^-?[1-9]\d*$ //匹配整數 ^[1-9]\d*|0$ //匹配非負整數(正整數 + 0) ^-[1-9]\d*|0$ //匹配非正整數(負整數 + 0) ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ //匹配正浮點數 ^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ //匹配負浮點數 ^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$ //匹配浮點數 ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$ //匹配非負浮點數(正浮點數 + 0) ^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$ //匹配非正浮點數(負浮點數 + 0) 評註:處理大量數據時有用,具體應用時注意修正 匹配特定字元串: ^[A-Za-z]+$ //匹配由26個英文字母組成的字元串 ^[A-Z]+$ //匹配由26個英文字母的大寫組成的字元串 ^[a-z]+$ //匹配由26個英文字母的小寫組成的字元串 ^[A-Za-z0-9]+$ //匹配由數字和26個英文字母組成的字元串 ^\w+$ //匹配由數字、26個英文字母或者下劃線組成的字元串 /http:\/\/(.*)\//i //匹配外部鏈接地址

滿意請採納

2. 需要一個PHP正則表達式來驗證密碼,不知道限制大小寫怎麼寫了,求教一下.

$str='你要輸入的密碼';

$model='/[A-Z]+[a-z]+.*/'; //最少要包含一個或者多個大寫或者小寫,和0個或則多個任意字元;
$modelength='/.{8,}/'; //輸入的最少為8位

if(!preg_match($modelength,'aaa')){
echo '密碼不能少於8位';
}
if(!preg_match($model,$str)){
echo '密碼必須包含大小寫';
}

也可以這樣寫
$str="Aaaa!";
$model='/[A-Z]+[a-z]+.*/'; //最少要包含一個或者多個大寫或者小寫,和0個或則多個任意字元;
$modelength='/.{8,}/'; //輸入的最少為8位

if(!preg_match($model,$str)||strlen($str)<8){
echo '密碼需要包含大小寫,或者密碼長度小於8位';
}

3. php 正則表達式如何判斷一個字元串是否為合法的四則數學算式

代碼如下(經測通過):

<?php
$str="((1+1)*3.3)/10-12+(1+1)";
if(preg_match("/[+-*/.]{2}|[^+-*/()d.]+/i",$str,$matches)){
echo'非法算式';
}else{
if(substr_count($str,"(")==substr_count($str,")")){
echo'合法算式';
}else{
echo'括弧不匹配';
}
}
?>


判斷str里是否存在連續運算符、小數點或運算符、括弧、數字以外的字元

若存在則非法

若不存在則判斷str里( 和 )數量是否一致

4. PHP常用正則表達式匯總

1、w就是匹配字母或數字或下劃線或漢字,+則與*差不多,區別是+包括重復0次,而*就可以。=就ushi匹配=號兩個斜杠則表示正則表達式的分界。

2、正則表達式的限定符有:ThinkPHP的自動驗證機制是為了進行表單數據驗證,驗證可以支持function、callback、confirm、equal、unique和regex,這里要講的是使用正則表達式進行驗證。特殊字元許多元字元要求在試圖匹配它們時特別對待。

3、^/?[a-zA-Z0-9=:]*$!是對php中單引號的轉義。或者還有更簡單的!^/?[a-z0-9=:]*$!ii表示忽略大小寫。模式分隔符就是為了區分表達式和像i這樣的模式修飾符而設計的。

5. PHP正則表達式的使用技巧

PHP正則表達式的定義

用於描述字元排列和匹配模式的一種語法規則 它主要用於字元串的模式分割 匹配 查找及替換操作

PHP中的正則函數

PHP中有兩套正則函數 兩者功能差不多 分別為

一套是由PCRE(Perl Compatible Regular Expression)庫提供的 使用 preg_ 為前綴命名的函數

一套由POSIX(Portable Operating System Interface of Unix )擴展提供的 使用以 ereg_ 為前綴命名的函數 (POSIX的正則函數庫 自PHP 以後 就不在推薦使用 從PHP 以後 就將被移除)

由於POSIX正則即將推出歷史舞台 並且PCRE和perl的形式差不多 更利於我們在perl和php之間切換 所以這里重點介紹PCRE正則的使用

PCRE正則表達式

PCRE全稱為Perl Compatible Regular Expression 意思是Perl兼容正則表達式

在PCRE中 通常將模式表達式(即正則表達式)包含在兩個反斜線 / 之間 如 /apple/

正則中重要的幾個概念有 元字元 轉義 模式單元(重復) 反義 引用和斷言 這些概念都可以在文章[ ]中輕松的理解和掌握

常用的元字元(Meta character)

元字元 說明

/A 匹配字元串串首的原子

/Z 匹配字元串串尾的原子

/b 匹配單詞的邊界 //bis/ 匹配頭為is的字元串 /is/b/ 匹配尾為is的字元串 //bis/b/ 定界

/B 匹配除單詞邊界之外的任意字元 //Bis/啟局 匹配單詞 This 中的 is

/d 匹配一個數字 等價於[ ]

/D 匹配除數字以外任何一個字元 等價於[^ ]

/w 匹配一個英文字母 數字或下劃線 等價於[ a zA Z_]

/W 匹配除英文字母 數字和下劃線以外任何一個字元 等價於[^ a zA Z_]

/s 匹配一個空白字元 等價於[/f/t/v]

/S 匹配除空白字元以外任何一個字元 等價於[^/f/t/v]

/f 匹配一個換頁符等價於 /x c 或 /cL

匹配段旁鋒一個換行符 等價於 /x a 或 /cJ

匹配一個回車符等價於/x d 或 /cM

/t 匹配一個製表符 等價於 /x /或/cl

/v 匹配一個垂直製表符 等價於/x b或/ck

/oNN 匹配一個八進制數字

/xNN 匹配一個十六進制數字

/cC 匹配一個控制字元

模式修正符(Pattern Modifiers)

模式修正符在忽略大小寫 匹配多行中使用特別多 掌握了這一個修正符 往往能解決我們遇到的很多問題

i -可同時匹配大小寫字母

M -將字元串視為多行

S -將字元串視為單行 換行符做普通字元看待 使 匹配任何字元

X -模式中的空白忽略不計

U -匹配到最近的字元串

e -將替換的字元串作為表達使用

格式 /apple/i匹配 apple 或 Apple 等 忽略大小寫 /i

PCRE的模式單元

// 提取第一位的屬性

/^/d{ } ([/W])/d{ }// /d{ }$匹配 / / 等字元串 但上述正則表達式不匹配 / 的格式 這是因為模式 [/W] 的結果 / 已經被存儲 下個位置 / 引用時 其匹配模式也是字元 /

當不需要存儲匹配結果時使用非存儲模式單元 (? )

例如/(?:a|b|c)(D|E|F)// g/ 將匹配 aEEg 在一些正則表達式中 使握晌用非存儲模式單元是必要的 否則 需要改變其後引用的順序 上例還可以寫成/(a|b|c)(C|E|F)/ g/

PCRE正則表達式函數

以下為引用的內容

preg_match()和preg_match_all() preg_quote() preg_split() preg_grep() preg_replace()

函數的具體使用 我們可以通過PHP手冊來找到 下面分享一些平時積累的正則表達式

匹配action屬性

以下為引用的內容

$str = ; $match = ; preg_match_all( //s+action=/ (?!)( *?)/ /s/ $str $match); print_r($match);

在正則中使用回調函數

以下為引用的內容

/** * replace some string by callback function * */ function callback_replace() { $url = ; $str = ; $str = preg_replace ( /(?<=/saction=/ )(?!)( *?)(?=/ /s)/e search(/$url // ) $str ); echo $str; } function search($url $match){ return $url / $match; }

帶斷言的正則匹配

以下為引用的內容

$match = ; $str = xxxxxx cn bold font paragraph text

; preg_match_all ( /(?<=<(/w{ })>) *(?=</// >)/ $str $match ); echo 匹配沒有屬性的HTML標簽中的內容 ; print_r ( $match );

替換HTML源碼中的地址

以下為引用的內容

$form_ = preg_replace ( /(?<=/saction=/ |/ssrc=/ |/s)(?!|javascript)( *?)(?=/ /s)/e add_url(/$url / // / ) $form_ );

lishixin/Article/program/PHP/201311/21027

6. php 正則 去掉所有標調符號,數字 和字母,只留空格分隔的中文

<?php
$str="*/123abcd只留sa";
preg_match_all('/[x{4e00}-x{9fff}]+/u',$str,$matches);
$str=join('',$matches[0]);
echo$str;
?>

輸出「只留」


完善一下,以上適用於UTF8編碼,如果是GBK的則需要轉碼,如下。

<?php
$str="*/123abcd只留sa";
$str=mb_convert_encoding($str,'UTF-8','GB2312');
preg_match_all('/[x{4e00}-x{9fff}]+/u',$str,$matches);
$str=join('',$matches[0]);
echo$str;
?>
熱點內容
安卓如何更改桌面天氣 發布:2025-03-03 23:21:53 瀏覽:877
蘋果安卓怎麼吃雞聯機 發布:2025-03-03 23:21:11 瀏覽:118
webview緩存 發布:2025-03-03 23:16:26 瀏覽:947
怎麼升級安卓60 發布:2025-03-03 23:07:59 瀏覽:869
thinkphp緩存的使用 發布:2025-03-03 22:54:32 瀏覽:577
c語言寫飛機 發布:2025-03-03 22:37:06 瀏覽:655
安卓通用導航倒車控制線接在哪裡 發布:2025-03-03 22:35:52 瀏覽:583
c語言模擬電梯 發布:2025-03-03 22:34:52 瀏覽:739
wegeam如何看游戲的最低配置 發布:2025-03-03 22:20:12 瀏覽:482
雲伺服器ip轉發教程 發布:2025-03-03 22:19:37 瀏覽:108