php正則表達式語法大全

正則表達式:元字符

元字符是在正則表達式中具有特殊含義的符號或字符。

元字符的處理視以下情況而異:

  • 正則表達式是與 SIMILAR TO 或 REGEXP 搜索條件一起使用,還是與 REGEXP_SUBSTR 函數一起使用

  • 元字符是否在正則表達式的字符類的內部

在繼續之前,應瞭解字符類的定義。字符類是一組括在方括號內的字符,將根據這組字符對字符串中的字符進行匹配。例如,在 SIMILAR TO 'ab[1-9]' 語法中,[1-9] 就是一個字符類,它與 1 到 9 範圍中(包括 1 和 9)的某一數字匹配。正則表達式中元字符的處理方式各不相同,這取決於元字符是否被放在字符類的內部。具體來說,當元字符放在字符類的內部時,多數元字符作爲常規字符來處理。

對於 SIMILAR TO(僅限於 SIMILAR TO),元字符 *、?、+、_、|、(、)、{ 必須在字符類內進行轉義。

要在字符類中包括減號 (-)、脫字符 (^) 或直角方括號 (]) 字符,必須將字符轉義。

下面給出了所支持的正則表達式元字符的列表。當 SIMILAR TO、REGEXP 和 REGEXP_SUBSTR 使用元字符時,幾乎所有元字符的處理方式都相同:

字符

其它信息
[ 和 ]

左右方括號用於指定字符類。字符類是進行匹配時所要依據的一組字符。

除連字符 (-) 和脫字符 (^) 外,在字符類中指定的元字符和量詞(如 * 和 {m},分別爲元字符和量詞)沒有特殊意義,可當作實際字符進行運算。

SQL Anywhere 還支持子字符類,例如 POSIX 字符類。請參見正則表達式:特殊子字符類。

* 星號可用於與字符匹配 0 次或多次。例如,REGEXP '.*abc' 匹配的字符串以 abc 結尾並以任何前綴開頭。因此,aabc、xyzabc 和 abc 匹配,但 bc 和 abcc 則不匹配。
? 問號可用於與字符匹配 0 次或 1 次。例如,'colou?r' 匹配 color 和 colour。
+ 加號可用於與字符匹配 1 次或多次。例如,'bre+' 匹配 bre 和 bree,但不匹配 br。
-

可以在字符類中使用一個連字符來表示一個範圍。例如,REGEXP '[a-e]' 匹配 a、b、c、d 和 e。

有關 REGEXP 和 SIMILAR TO 如何對範圍求值的詳細信息,請參見LIKE、REGEXP 和 SIMILAR TO:字符比較上的差異。

%

百分號可與 SIMILAR TO 配合使用來匹配任意數目的字符。

不將百分號視爲 REGEXP 和 REGEXP_SUBSTR 所使用的元字符。當指定時,它匹配百分號 (%)。

_(下劃線字符)

可將下劃線與 SIMILAR TO 配合使用來匹配單個字符。

不將下劃線視爲 REGEXP 和 REGEXP_SUBSTR 所使用的元字符。當指定時,它匹配下劃線 (_)。

|

管道符號用於指定匹配字符串時要使用的替代模式。在由豎線分隔的一行模式中,豎線被解釋爲 OR,匹配過程從最左側的模式開始,在找到第一個匹配項時停止。因此,您應按優先級的降序順序列出模式。您可以指定任意數量的替代模式。

( 和 ) 當左括號和右括號用於正則表達式的各個組合部分時,它們爲元字符。例如,(ab)* 匹配零個或多個 ab 的重複項。與使用數學表達式一樣,您使用組合來控制正則表達式各部分的計算順序。
{ 和 }

當左大括號和右大括號用於指定量詞時,它們爲元字符。量詞指定一個模式要構成某個匹配所必須重複的次數。例如:

  • {m}   匹配某個字符正好 m 次。例如,'519-[0-9]{3}-[0-9]{4}' 匹配 519 地區號中的一個電話號碼(假定數據按語法中定義的方式進行格式設置)。

  • {m,}   匹配某個字符至少 m 次。例如,'[0-9]{5,}' 匹配任何含有五個或更多數字的字符串。

  • {m,n}   匹配某個字符至少 m 次,但不超過 n 次。例如,SIMILAR TO '_{5,10}' 匹配任何含有 5 到 10(含 5 和 10)個字符的字符串。

  反斜線被用作元字符的轉義字符。它也可被用於轉義非元字符。
^

對於 REGEXP 和 REGEXP_SUBSTR,當脫字符在字符類的外部時,脫字符匹配字符串的開頭字符。例如,'^[hc]at' 匹配 hat 和 cat,但只在字符串的開頭。

當用在字符類內部時,以下行爲適用:

  • REGEXP 和 REGEXP_SUBSTR   當脫字符爲字符類中的第一個字符時,它與字符集中字符以外的任何字符匹配。例如,REGEXP '[^abc]' 匹配 a、b 或 c 以外的任何字符。

    如果脫字符不是方括號內的第一個字符,那麼它匹配脫字符。例如,REGEXP_SUBSTR '[a-e^c]' 匹配 a、b、c、d、e 和 ^。

  • SIMILAR TO   對於 SIMILAR TO,脫字符被視作減號運算符。例如,SIMILAR TO '[a-e^c]' 匹配 a、b、d 和 e。

$

當與 REGEXP 和 REGEXP_SUBSTR 一起使用時,匹配字符串的結尾字符。例如,SIMILAR TO 'cat$' 匹配 cat,但不匹配 catfish。

當與 SIMILAR TO 一起使用時,它匹配問號。

.

當與 REGEXP 和 REGEXP_SUBSTR 一起使用時,匹配任何單個字符。例如,REGEXP 'a.cd' 匹配以 a 開頭並以 cd 結尾的含有四個字符的任何字符串。

當與 SIMILAR TO 一起使用時,它匹配句點 (.)。

:

在字符集中使用冒號來指定子字符類。例如,'[[:alnum:]]'。

正則表達式:特殊子字符類

子字符類是嵌入到較大字符類中的特殊字符類。除了自定義字符類(在其中定義要匹配的字符集,例如,[abxq4] 將匹配字符集限制爲 a、b、x、q 和 4)以外,SQL Anywhere 還支持子字符類,例如,大部分 POSIX 字符類。例如,[[:alpha:]] 表示所有大寫和小寫字母的集合。

REGEXP 搜索條件和 REGEXP_SUBSTR 函數支持下表中的所有語法約定,但 SIMILAR TO 搜索表達式不支持。SIMILAR TO 支持的約定在 SIMILAR TO 列中有一個 Y。

在 REGEXP 中,當使用 REGEXP_SUBSTR 函數時,可以使用脫字符對子字符類取非。例如,[[:^alpha:]] 匹配除字母字符以外的所有字符的集合。

子字符類 其它信息 SIMILAR TO
[:alpha:]

匹配當前歸類中的大寫和小寫字母字符。例如,'[0-9]{3}[[:alpha:]]{2}' 匹配三個數字,後跟兩個字母。

Y
[:alnum:]

匹配當前歸類中的數字、大寫和小寫字母字符。例如,'[[:alnum:]]+' 匹配含有一個或多個字母和數字的字符串。

Y
[:digit:]

匹配當前歸類中的數字。例如,'[[:digit:]-]+' 匹配含有一個或多個數字或橫線的字符串。同樣,'[^[:digit:]-]+' 匹配含有一個或多個不是數字或橫線的字符的字符串。

Y
[:lower:]

匹配當前歸類中的小寫字母字符。例如,'[[:lower:]]' 不匹配 A,因爲 A 爲大寫。

Y
[:space:]

匹配單個空格 (' ')。例如,以下語句搜索 Contacts.City 以查找任何名稱爲兩個詞的城市:

SELECT City FROM Contacts WHERE City REGEXP '.*[[:space:]].*';  
Y
[:upper:]

匹配當前歸類中的大寫字母字符。例如,'[[:upper:]ab]' 與以下其中一項匹配:任何大寫字母、a 或 b。

Y
[:whitespace:]

匹配一個空白字符,例如,空格、製表符、換頁符和回車符。

Y
[:ascii:]

匹配任何七位的 ASCII 字符(0 到 127 之間的順序值)。

 
[:blank:]

匹配一個空白區或水平製表符。

[[:blank:]] 等效於 [ t]。

 
[:cntrl:]

匹配順序值小於 32 或字符值爲 127 的 ASCII 字符(控制字符)。控制字符包括換行符、換頁符、退格符,等等。

 
[:graph:]

匹配打印字符。

[[:graph:]] 等效於 [[:alnum:][:punct:]]。

 
[:print:]

匹配打印字符和空格。

[[:print:]] 等效於 [[:graph:][:whitespace:]]。

 
[:punct:]

匹配其中一個字符: !"#$%&'()*+,-./:;<=>?@[]^_`{|}~.

[:punct:] 子字符類不能包括當前歸類中可用的非 ASCII 標點字符。

 
[:word:]

匹配當前歸類中的字母、數字或下劃線字符。

[[:word:]] 等效於 [[:alnum:]_]。

 
[:xdigit:]

匹配字符類 [0-9A-Fa-f] 中的字符。

 

正則表達式:所支持的其它語法約定

REGEXP 搜索條件和 REGEXP_SUBSTR 函數支持以下語法約定,同時它們假定反斜線爲轉義字符。而 SIMILAR TO 搜索表達式不支持這些約定。

正則表達式語法 名稱和含義
xxx

匹配值爲 xxx 的字符,其中 xxx 是任何八進制數字序列,0 是零。例如,134 匹配反斜線。

a

匹配報警字符。

A

用在字符集外部以便匹配字符串的開頭。

等效於在字符集外部使用的 ^。

b

匹配退格字符。

B

匹配反斜線字符 ()。

cX

匹配已命名的控制字符。例如,cZ 代表 ctrl-Z。

d

匹配當前歸類中的一個數字。例如,以下語句搜索 Contacts.Phone 以查找以 00 結尾的所有電話號碼:

SELECT Surname, Surname, City, Phone FROM Contacts WHERE Phone REGEXP '\d{8}00';  

d 既可用在字符類的內部也可用在字符類的外部,等效於 [[:digit:]]。

D

匹配數字以外的任何字符。它的作用與 d 正好相反。

D 既可用在字符類的內部也可用在字符類的外部,等效於 [^[:digit:]]。

在方括號內使用取非速記時請務必謹慎。[DS] 與 [^ds] 並不相同。後者匹配數字或空格以外的任何字符。所以它匹配 x,但不匹配 8。而前者匹配不是數字或不是空格(滿足兩個條件之一)的任何字符。因爲數字不是空格,空格也不是數字,所以 [DS] 可以匹配任何字符、數字、空格或其它字符。

e

匹配轉義字符。

E

將由 Q 啓動的將元字符視爲非元字符這一功能停止。

有關正則表達式元字符的列表,請參見正則表達式:元字符。

f

匹配換頁符。

n

匹配換行符。

Q

將所有元字符視爲非元字符,直到遇到 E。例如,Q[$E 等效於 [$。

有關正則表達式元字符的列表,請參見正則表達式:元字符。

r

匹配回車符。

s

匹配一個被視爲白空格的空格或字符。例如,以下語句從 Products.ProductName 中返回名稱中至少有一個空格的所有產品名:

SELECT Name FROM Products WHERE Name REGEXP '.*\s.*'  

s 既可用在字符類的內部也可用在字符類的外部,等效於 [[:whitespace:]]。請參見正則表達式:特殊子字符類。

S

匹配非白空格字符。它的作用與 d 正好相反,而等效於 [^[:whitespace:]]。

S 既可用在字符類的內部也可用在字符類的外部。請參見正則表達式:特殊子字符類。

在方括號內使用取非速記時請務必謹慎。[DS] 與 [^ds] 並不相同。後者匹配數字或空格以外的任何字符。所以它匹配 x,但不匹配 8。而前者匹配不是數字或不是空格(滿足兩個條件之一)的任何字符。因爲數字不是空格,空格也不是數字,所以 [DS] 可以匹配任何字符、數字、空格或其它字符。

t

匹配水平製表符。

v

匹配垂直製表符。

w

匹配當前歸類中的字母字符、數字或下劃線。例如,以下語句從 Contacts.Surname 返回長度正好爲七個字母數字字符的所有姓:

SELECT Surname FROM Contacts WHERE Surname REGEXP '\w{7}';  

w 既可用在字符類的內部也可用在字符類的外部。請參見正則表達式:特殊子字符類。

等效於 [[:alnum:]_].。

W

匹配當前歸類中字母字符、數字或下劃線以外的任何字符。它的作用與 w 正好相反,而等效於 [^[:alnum:]_]。

在字符類的內部和外部都可使用此正則表達式。請參見正則表達式:特殊子字符類。

xhh

匹配值爲 0xhh 的字符,其中 hh 最多爲兩個十六進制數字。例如,x2D 等效於一個連字符。

等效於 x{hh}。

x{hhh}

匹配值爲 0xhhh 的字符,其中 hhh 最多爲三個十六進制數字。

z 和 Z

匹配字符串結尾處的位置(而非字符)。

等效於 $。

正則表達式:斷言

斷言測試條件是否爲真,並影響字符串中開始匹配的位置。斷言不返回字符;最終匹配中不包括斷言模式。REGEXP 搜索條件和 REGEXP_SUBSTR 函數支持這些斷言模式。而 SIMILAR TO 搜索表達式不支持這些約定。

在嘗試拆分字符串時,lookahead 和 lookbehind 斷言對於 REGEXP_SUBSTR 將非常有用。例如,您可以通過執行以下語句返回 Customers 表的 Address 列中街道名稱(不帶街道編號)的列表:

SELECT REGEXP_SUBSTR( Street, '(?<=^\S+\s+).*$' ) FROM Customers;  

另一個示例:假定您想要使用正則表達式來驗證口令是否符合某些規則。您可以使用類似於下面內容的零寬度斷言:

IFpasswordREGEXP '(?=.*[[:digit:]])(?=.*[[:alpha:]].*[[:alpha:]])[[:word:]]{4,12}' MESSAGE 'Password conforms' TO CLIENT; ELSE MESSAGE 'Password does not conform' TO CLIENT; END IF  

當滿足以下條件時,口令有效:

  • password 至少有一位數(零寬度肯定斷言 [[:digit:]])

  • password 至少有兩個字母字符(零寬度肯定斷言 [[:alpha:]].*[[:alpha:]])

  • password 只含有字母數字字符或下劃線字符 ([[:word:]])

  • password 最少含有 4 個字符,最多含有 12 個字符 ({4,12})

下表包含 SQL Anywhere 支持的斷言:

語法 含義
(?=pattern)

肯定的 lookahead 零寬度斷言   查看字符串中的當前位置是否緊跟着出現了 pattern,而 pattern 不會成爲匹配字符串的一部分。'A(?=B)' 匹配後面跟有 B 的 A,但不使 B 成爲匹配的一部分。

例如,SELECT REGEXP_SUBSTR( 'in new york city', 'new(?=\syork)'); 會返回子串 new,因爲它後面緊跟着 ' york'(請注意 york 前面的空格)。

(?!pattern)

否定的 lookahead 零寬度斷言   查看字符串中的當前位置是否沒有 緊跟着出現 pattern,而 pattern 不會成爲匹配字符串的一部分。所以,'A(?!B)' 匹配後面未跟着 B 的 A。

例如,SELECT REGEXP_SUBSTR('new jersey', 'new(?!\syork)'); 會返回子串 new。

(?<=pattern)

肯定的 lookbehind 零寬度斷言   查看字符串中的當前位置是否前面緊挨着出現了 pattern,而 pattern 不會成爲匹配字符串的一部分。所以,'(?<=A)B' 匹配前面緊挨着 A 的 B,但不使 A 成爲匹配的一部分。

例如,SELECT REGEXP_SUBSTR('new york', '(?<=new\s)york'); 會返回子串 york。

(?<!pattern)

否定的 lookbehind 零寬度斷言   查看字符串中的當前位置的前面是否沒有 緊挨着出現 pattern,而 pattern 不會成爲匹配字符串的一部分。

例如,SELECT REGEXP_SUBSTR('about york', '(?<!new\s)york'); 會返回子串 york。

(?>pattern)

所屬關係局部子表達式   僅匹配與 pattern 匹配的剩餘字符串的最大前綴。

例如,在 'aa' REGEXP '(?>a*)a' 中,(?>a*) 匹配(並消耗)aa,而決不僅僅是前導 a。因此,'aa' REGEXP '(?>a*)a' 的計算結果爲 false。

(?:pattern)

非捕獲塊   該語法在功能上就等效於 pattern,是爲實現兼容性而提供。

例如,在 'bb' REGEXP '(?:b*)b' 中,(?:b*) 匹配(並消耗)bb。但是,與所屬關係局部子表達式不同,bb 中的最後一個 b 會被放棄,以允許整個匹配成功(即,允許與在非捕獲塊的外部找到的 b 匹配)。

同樣,'a(?:bc|b)c' 匹配 abcc 和 abc。在匹配 abc 時,bc 中最後面的 c 會發生回溯,以便可以使用組外的 c 來使匹配成功。

(?#text)

用於註釋。text 的內容會被忽略。

version="1.0" src="http://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_likeurl?url=http%3A%2F%2Fwww.lao8.org%2Farticle_1437%2Fzhengze_yufadaquan&style=3&otype=like&showcount=1" scrolling="no" frameborder="0" allowtransparency="true" style="border-style: none; overflow: hidden; width: 130px; height: 30px;">

====================================================================================

 
介紹
 
       正則表達式,大家在開發中應該是經常用到,現在很多開發語言都有正則表達式的應用,比如javascript,java,.net,php等等,我今天就把我對正則表達式的理解跟大家嘮嘮,不當之處,請多多指教!
 
需要知道的術語——下面的術語你知道多少?
 
Δ  定界符
Δ  字符域
Δ  修飾符
Δ  限定符
Δ  脫字符
Δ  註釋
 
定位
 
       我們什麼時候使用正則表達式呢?不是所有的字符操作都用正則就好了,php在某些方面用正則反而影響效率。當我們遇到複雜文本數據的解析時候,用正則是比較好的選擇。
 
優點
 
      正則表達式在處理複雜字符操作的時候,可以提高工作效率,也在一定程度節省你的代碼量
 
缺點
 
       我們在使用正則表達式的時候,複雜的正則表達式會加大代碼的複雜度,讓人很難理解。所以我們有的時候需要在正則表達式內部添加註釋。
 
通用模式

 
 ¤ 定界符,通常使用 "/"做爲定界符開始和結束,也可以使用"#"。
  什麼時候使用"#"呢?一般是在你的字符串中有很多"/"字符的時候,因爲正則的時候這種字符需要轉義,比如uri。
     使用"/"定界符的代碼如下.
$regex = '/^http:\/\/([\w.]+)\/([\w]+)\/([\w]+)\.html$/i';
$matches = array();
 
if(preg_match($regex, $str, $matches)){
    var_dump($matches);
}
 
echo "\n";

    preg_match中的$matches[0]將包含與整個模式匹配的字符串。 

    使用"#"定界符的代碼如下.這個時候對"/"就不轉義!

$regex = '#^http://([\w.]+)/([\w]+)/([\w]+)\.html$#i';
$matches = array();
 
if(preg_match($regex, $str, $matches)){
    var_dump($matches);
}
 
echo "\n";

  ¤ 修飾符:用於改變正則表達式的行爲。

     我們看到的('/^http:\/\/([\w.]+)\/([\w]+)\/([\w]+)\.html/i')中的最後一個"i"就是修飾符,表示忽略大小寫,還有一個我們經常用到的是"x"表示忽略空格。

貢獻代碼:

  

$regex = '/HELLO/';
$str = 'hello word';
$matches = array();
 
if(preg_match($regex, $str, $matches)){
    echo 'No i:Valid Successful!',"\n";
}
 
if(preg_match($regex.'i', $str, $matches)){
    echo 'YES i:Valid Successful!',"\n";
}

 

  ¤ 字符域:[\w]用方括號擴起來的部分就是字符域。

  ¤ 限定符:如[\w]{3,5}或者[\w]*或者[\w]+這些[\w]後面的符號都表示限定符。現介紹具體意義。

     {3,5}表示3到5個字符。{3,}超過3個字符,{,5}最多5個,{3}三個字符。

     * 表示0到多個

     + 表示1到多個。

  ¤ 脫字符號

      ^:

          > 放在字符域(如:[^\w])中表示否定(不包括的意思)——“反向選擇”

          >  放在表達式之前,表示以當前這個字符開始。(/^n/i,表示以n開頭)。

      注意,我們經常管"\"叫"跳脫字符"。用於轉義一些特殊符號,如".","/"

 

通配符(lookarounds):斷言某些字符串中某些字符的存在與否!
 
lookarounds分兩種:lookaheads(正向預查 ?=)和lookbehinds(反向預查?<=)。
> 格式:
正向預查:(?=) 相對應的 (?!)表示否定意思
反向預查:(?<=) 相對應的 (?<!)表示否定意思
前後緊跟字符
$regex = '/(?<=c)d(?=e)/'/* d 前面緊跟c, d 後面緊跟e*/
$str = 'abcdefgk';
$matches = array();
 
if(preg_match($regex, $str, $matches)){
    var_dump($matches);
}
 
echo "\n";

否定意義:

$regex = '/(?<!c)d(?!e)/'/* d 前面不緊跟c, d 後面不緊跟e*/
$str = 'abcdefgk';
$matches = array();
 
if(preg_match($regex, $str, $matches)){
    var_dump($matches);
}
 
echo "\n";

 

>字符寬度:零
驗證零字符代碼
$regex = '/HE(?=L)LO/i';
$str = 'HELLO';
$matches = array();
 
if(preg_match($regex, $str, $matches)){
    var_dump($matches);
}
 
echo "\n";

打印不出結果!

$regex = '/HE(?=L)LLO/i';
$str = 'HELLO';
$matches = array();
 
if(preg_match($regex, $str, $matches)){
    var_dump($matches);
}
 
echo "\n";

 能打印出結果!

說明:(?=L)意思是HE後面緊跟一個L字符。但是(?=L)本身不佔字符,要與(L)區分,(L)本身佔一個字符。

 
捕獲數據
 
沒有指明類型而進行的分組,將會被獲取,供以後使用。
> 指明類型指的是通配符。所以只有圓括號起始位置沒有問號的才能被捕捉。

> 在同一個表達式內的引用叫做反向引用。
> 調用格式: \編號(如\1)。
$regex = '/^(Chuanshanjia)[\w\s!]+\1$/';   
$str = 'Chuanshanjia thank Chuanshanjia';
$matches = array();
 
if(preg_match($regex, $str, $matches)){
    var_dump($matches);
}
 
echo "\n";

 

> 避免捕獲數據
   格式:(?:pattern)
   優點:將使有效反向引用數量保持在最小,代碼更加、清楚。
 
>命名捕獲組
   格式:(?P<組名>) 調用方式 (?P=組名)
$regex = '/(?P<author>chuanshanjia)[\s]Is[\s](?P=author)/i';
$str = 'author:chuanshanjia Is chuanshanjia';
$matches = array();
 
if(preg_match($regex, $str, $matches)){
    var_dump($matches);
}
 
echo "\n";

運行結果

  

惰性匹配(記住:會進行兩部操作,請看下面的原理部分)

  格式:限定符?

     原理:"?":如果前面有限定符,會使用最小的數據。如“*”會取0個,而“+”會取1個,如過是{3,5}會取3個。

先看下面的兩個代碼:

代碼1.

<?php
$regex = '/heL*/i';
$str = 'heLLLLLLLLLLLLLLLL';
if(preg_match($regex, $str, $matches)){
    var_dump($matches);
}
 
echo "\n";

  結果1.

 

代碼2

<?php
$regex = '/heL*?/i';
$str = 'heLLLLLLLLLLLLLLLL';
if(preg_match($regex, $str, $matches)){
    var_dump($matches);
}
 
echo "\n";

  結果2

 

代碼3,使用“+”

<?php
$regex = '/heL+?/i';
$str = 'heLLLLLLLLLLLLLLLL';
if(preg_match($regex, $str, $matches)){
    var_dump($matches);
}
 
echo "\n";

 結果3

代碼4,使用{3,5}

<?php
$regex = '/heL{3,10}?/i';
$str = 'heLLLLLLLLLLLLLLLL';
if(preg_match($regex, $str, $matches)){
    var_dump($matches);
}
 
echo "\n";

 結果4

 
 

正則表達式的註釋
 
格式:(?# 註釋內容)
用途:主要用於複雜的註釋
 
 貢獻代碼:是一個用於連接MYSQL數據庫的正則表達式
$regex = '/
    ^host=(?<!\.)([\d.]+)(?!\.)                 (?#主機地址)
\|
    ([\w!@#$%^&*()_+\-]+)                       (?#用戶名)
\|
    ([\w!@#$%^&*()_+\-]+)                       (?#密碼)
(?!\|)$/ix';
 
$str = 'host=192.168.10.221|root|123456';
$matches = array();
 
if(preg_match($regex, $str, $matches)){
    var_dump($matches);
}
 
echo "\n";

 

 
特殊字符
 
 
特殊字符 解釋
* 0到多次
+ 1到多次還可以寫成{1,}
? 0或1次
. 匹配除換行符外的所有單個的字符
\w [a-zA-Z0-9_]
\s 空白字符(空格,換行符,回車符)[\t\n\r]
\d [0-9]


發佈了20 篇原創文章 · 獲贊 2 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章