本文目錄一覽:
- 1、PHP正則表達式問題(帝國CMS)
- 2、PHP正則表達式((?:[0-9a-zA-Z$_.`-]|[\xC2-\xDF][\x80-\xBF])+)/is是什麼意思?
- 3、php 正則表達式
- 4、php 身份證的正則表達式怎麼寫?
- 5、php中正則表達式中模式修正符號Z,意思是強制以什麼結尾。為什麼在php中不能用
- 6、php正則表達式模式修正符U
PHP正則表達式問題(帝國CMS)
/後邊的是修正符其中i是不區分大小寫修正符很有用的例子:<?php//標記在整個模式之外;例://¥mode="/\bis\b/U",其中U在外面; //修正符:i 不區分大小寫的匹配;//如:"/abc/i"可以與abc或aBC或ABc等匹配; //修正符:m 將字元串視為多行7不管是那行都能匹配;例://模式為:¥mode="/abc/m";//要匹配的字元串為:¥str="bcefg5e\nabcdfe"//注意其中\n,換行了;abc換到了下一行;//¥str和¥mode仍可以匹配,修正符m使得多行也可匹配; //修正符:s 將字元串視為單行,換行符作為普通字元;例://模式為:¥mode="/pr.y/";//要匹配字元串為:¥str="pr\ny";//兩者不可匹配; . 是除了換行以外的字元可匹配;//修改下模式為:¥mode="/pr.y/s";//其中修正符s將\n視為普通字元,即不是換行;//最後兩者可以匹配; //修正符:x 將模式中的空白忽略; //修正符:A 強制從目標字元串開頭匹配;例://¥mode="/abc/A";//可以與¥str="abcsdfi"匹配9//不可以與¥str2="sdsdabc"匹配;//因為¥str2不是以abc開頭; //修正符:D 如果使用¥限制結尾字元,則不允許結尾有換行;例://模式為:¥mode="/abc¥/";//可以與最後有換行的¥str="adshabc\n"匹配;//元子符¥會忽略最後的換行\n;//如果模式為:¥mode="/abc/D"0628//則不能與¥str="adshabc\n"匹配,//修正符D限制其......餘下全文>>
PHP正則表達式((?:[0-9a-zA-Z$_.`-]|[\xC2-\xDF][\x80-\xBF])+)/is是什麼意思?
(?: )表示只進行分組,不進行捕獲
[0-9a-zA-Z$_.`-] ——0-9、a-z、A-Z或$、_、.、`、-中的一個字元
| ——表示或者
[\xC2-\xDF][\x80-\xBF] ——用十六進位表示的字元範圍【具體是什麼字元不太清楚,比如漢字的範圍一般是 4E00-9FA5】
+ ——前面的字元有一個或多個
(?: +) 外面的括弧( )——是捕獲括弧。即不捕獲單個匹配字元,只捕獲匹配的最大字串。
/is——是PHP中正則表達式模式修飾符,其中i代表 不區分大小寫,s代表:如果設定了這個修正符,那麼,被匹配的字元串將視為一行來看,包括換行符,換行符將被視為普通字元串。
模式修飾符還有:m、x、e等
php 正則表達式
建議你到我的網站上下載PHP5參考手冊,裡邊有詳細的正則表達式的參考。
模式要有開始和結束的字元,一下都是合法的:
/
|
#
‘
前提是模式中不能再出現這個字元了。
結尾的/後邊的is是模式修政府,具體如下
i (PCRE_CASELESS)
如果設定此修正符,模式中的字元將同時匹配大小寫字母。
m(PCRE_MULTILINE)
默認情況下,PCRE 將目標字元串作為單一的一「行」字元所組成的(甚至其中包含有換行符也是如此)。「行起始」元字元(^)僅僅匹配字元串的起始,「行結束」元字元($)僅僅匹配字元串的結束,或者最後一個字元是換行符時其前面(除非設定了 D 修正符)。這和 Perl 是一樣的。
當設定了此修正符,「行起始」和「行結束」除了匹配整個字元串開頭和結束外,還分別匹配其中的換行符的之後和之前。這和 Perl 的 /m 修正符是等效的。如果目標字元串中沒有「\n」字元或者模式中沒有 ^ 或 $,則設定此修正符沒有任何效果。
s(PCRE_DOTALL)
如果設定了此修正符,模式中的圓點元字元(.)匹配所有的字元,包括換行符。沒有此設定的話,則不包括換行符。這和 Perl 的 /s 修正符是等效的。排除字元類例如 [^a] 總是匹配換行符的,無論是否設定了此修正符。
x(PCRE_EXTENDED)
如果設定了此修正符,模式中的空白字元除了被轉義的或在字元類中的以外完全被忽略,在未轉義的字元類之外的 # 以及下一個換行符之間的所有字元,包括兩頭,也都被忽略。這和 Perl 的 /x 修正符是等效的,使得可以在複雜的模式中加入注釋。然而注意,這僅適用於數據字元。空白字元可能永遠不會出現於模式中的特殊字元序列,例如引入條件子模式的序列 (?( 中間。
e
如果設定了此修正符,preg_replace() 在替換字元串中對逆向引用作正常的替換,將其作為 PHP 代碼求值,並用其結果來替換所搜索的字元串。
只有 preg_replace() 使用此修正符,其它 PCRE 函數將忽略之。
注意: 本修正符在 PHP3 中不可用。
A(PCRE_ANCHORED)
如果設定了此修正符,模式被強製為「anchored」,即強制僅從目標字元串的開頭開始匹配。此效果也可以通過適當的模式本身來實現(在 Perl 中實現的唯一方法)。
D(PCRE_DOLLAR_ENDONLY)
如果設定了此修正符,模式中的美元元字元僅匹配目標字元串的結尾。沒有此選項時,如果最後一個字元是換行符的話,美元符號也會匹配此字元之前(但不會匹配任何其它換行符之前)。如果設定了 m 修正符則忽略此選項。Perl 中沒有與其等價的修正符。
S
當一個模式將被使用若干次時,為加速匹配起見值得先對其進行分析。如果設定了此修正符則會進行額外的分析。目前,分析一個模式僅對沒有單一固定起始字元的 non-anchored 模式有用。
U(PCRE_UNGREEDY)
本修正符反轉了匹配數量的值使其不是默認的重複,而變成在後面跟上「?」才變得重複。這和 Perl 不兼容。也可以通過在模式之中設定 (?U) 修正符或者在數量符之後跟一個問號(如 .*?)來啟用此選項。
X(PCRE_EXTRA)
此修正符啟用了一個 PCRE 中與 Perl 不兼容的額外功能。模式中的任何反斜線後面跟上一個沒有特殊意義的字母導致一個錯誤,從而保留此組合以備將來擴充。默認情況下,和 Perl 一樣,一個反斜線後面跟一個沒有特殊意義的字母被當成該字母本身。當前沒有其它特性受此修正符控制。
u(PCRE_UTF8)
此修正符啟用了一個 PCRE 中與 Perl 不兼容的額外功能。模式字元串被當成 UTF-8。本修正符在 Unix 下自 PHP 4.1.0 起可用,在 win32 下自 PHP 4.2.3 起可用。自 PHP 4.3.5 起開始檢查模式的 UTF-8 合法性。
php 身份證的正則表達式怎麼寫?
$IdCard = “/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/i”;
提示 :正則格式: 『/正則表達式/模式修正符』;
所以 添加 i 是忽略英文字母大小寫的
php中正則表達式中模式修正符號Z,意思是強制以什麼結尾。為什麼在php中不能用
\Z 匹配必須出現在字元串的末尾或出現在字元串末尾的 \n 之前。
\z 匹配必須出現在僅字元串的末尾。
並且它們都不受多行模式及點模式的影響。
例如:在匹配如多行文本時
11dfdf
22sdff
33dfdf
[此處是一空行]
\w+\Z 僅匹配到的是空行前的 33dfdf,而 \w+\z 則什麼都匹配不到,因為最後是以空行結尾的。
若上述文本中沒有最後的空行,則它們都能匹配到 33dfdf。
最後說明下,php 中是可以使用 \z 和 \Z 的。
php正則表達式模式修正符U
?是匹配一個字元,而*是匹配多個字元,所以這樣有沒有?一個樣
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/197925.html