首先,讓我們看看兩個(gè)非凡的字符:’^’ 和 ‘$’,他們是分別用來(lái)匹配字符串的開(kāi)始和結(jié)束,一下分別舉例說(shuō)明.
"^The": 匹配以 "The"開(kāi)頭的字符串;
"of despair$": 匹配以 "of despair" 結(jié)尾的字符串;
"^abc$": 匹配以abc開(kāi)頭和以abc結(jié)尾的字符串,實(shí)際上是只有abc與之匹配
"notice": 匹配包含notice的字符串
你可以看見(jiàn)假如你沒(méi)有用我們提到的兩個(gè)字符,最后一個(gè)例子,就是說(shuō)模式(正則表達(dá)式)可以出現(xiàn)在被檢驗(yàn)字符串的任何地方,你沒(méi)有把他鎖定到兩邊.
這里還有幾個(gè)字符 '*', ' ',和 '?', 他們用來(lái)表示一個(gè)字符可以出現(xiàn)的次數(shù)或者順序. 他們分別表示:"zero or more", "one or more", and "zero or one." 這里是一些例子:
"ab*": 匹配字符串a(chǎn)和0個(gè)或者更多b組成的字符串("a", "ab", "abbb", etc.);
"ab ": 和上面一樣,但最少有一個(gè)b ("ab", "abbb", etc.);
"ab?":匹配0個(gè)或者一個(gè)b;
"a?b $": 匹配以一個(gè)或者0個(gè)a再加上一個(gè)以上的b結(jié)尾的字符串.
你也可以在大括號(hào)里面限制字符出現(xiàn)的個(gè)數(shù),比如
"ab{2}": 匹配一個(gè)a后面跟兩個(gè)b(一個(gè)也不能少)("abb");
"ab{2,}": 最少更兩個(gè)b("abb", "abbbb", etc.);
"ab{3,5}": 2-5個(gè)b("abbb", "abbbb", or "abbbbb").
你還要注重到你必須總是指定 (i.e, "{0,2}", not "{,2}").同樣,你必須注重到, '*', ' ', 和'?' 分別和一下三個(gè)范圍標(biāo)注是一樣的,"{0,}", "{1,}", 和 "{0,1}",現(xiàn)在把一定數(shù)量的字符放到小括號(hào)里,比如:
"a(bc)*": 匹配 a 后面跟0個(gè)或者一個(gè)"bc";
"a(bc){1,5}": 一個(gè)到5個(gè) "bc."
還有一個(gè)字符 '│',相當(dāng)于OR 操作:
"hi│hello": 匹配含有"hi" 或者 "hello" 的 字符串;
"(b│cd)ef": 匹配含有 "bef" 或者 "cdef"的字符串;
"(a│b)*c": 匹配含有這樣 - 多個(gè)(包括0個(gè))a或b,后面跟一個(gè)c的字符串 的字符串;
一個(gè)點(diǎn)('.')可以代表所有的 單一字符:
"a.[0-9]": 一個(gè)a跟一個(gè)字符再跟一個(gè)數(shù)字的 (含有這樣一個(gè)字符串的字符串將被匹配,以后省略此括號(hào))"^.{3}$": 以三個(gè)字符結(jié)尾 .
中括號(hào)括住的內(nèi)容只匹配一個(gè)單一的字符
"[ab]": 匹配單個(gè)的 a 或者 b ( 和 "a│b" 一樣);
"[a-d]": 匹配'a' 到'd'的單個(gè)字符 (和"a│b│c│d" 還有 "[abcd]"效果一樣);
"^[a-zA-Z]": 匹配以字母開(kāi)頭的字符串
"[0-9]%": 匹配含有 形如 x% 的字符串
",[a-zA-Z0-9]$": 匹配以逗號(hào)在加一個(gè)數(shù)字或字母結(jié)尾的字符串
你也可以把你不想要得字符列在中括號(hào)里,你只需要在總括號(hào)里面使用'^' 作為開(kāi)頭 (i.e., "%[^a-zA-Z]%" 匹配含有 兩個(gè)百分號(hào)里面有一個(gè)非字母 的字符串).
為了能夠解釋?zhuān)?quot;^.[$()│* ?{"作為有非凡意義的字符的時(shí)候,你必須在這些字符面前加'', 還有在php3中你應(yīng)該避免在模式的最前面使用, 比如說(shuō),正則表達(dá)式 "($│?[0-9] " 應(yīng)該這樣調(diào)用 ereg("($│?[0-9] ", $str) (不知道php4是不是一樣)
不要忘記在中括號(hào)里面的字符是這條規(guī)路的例外.