1、字元描述:
\:將下乙個字元標記為特殊字元或字面值。例如 "n "與字元 "n "匹 配。 "\n "與換行符匹配。序列 "\\ "與 "\ "匹配, "\( "與 "( "匹配。
^ :匹配輸入的開始位置。
$ :匹配輸入的結尾。
* :匹配前乙個字元零次或幾次。例如, "zo* "可以匹配 "z "、 "zoo "。
+ :匹配前乙個字元一次或多次。例如, "zo+ "可以匹配 "zoo ",但不匹配 "z "。
? :匹配前乙個字元零次或一次。例如, "a?ve? "可以匹配 "never "中的 "ve "。
.:匹配換行符以外的任何字元。
(pattern) 與模式匹配並記住匹配。匹配的子字串可以從作為結果的 matches 集合中使用 item [0]...[n]取得。如果要匹配括號字元(和 ),可使用 "\( " 或 "\) "。
x|y:匹配 x 或 y。例如 "z|food " 可匹配 "z " 或 "food "。 "(z|f)ood " 匹 配 "zoo " 或 "food "。
:n 為非負的整數。匹配恰好n次。例如, "o " 不能與 "bob 中的 "o " 匹配,但是可以?quot;foooood "中的前兩個o匹配。
:n 為非負的整數。匹配至少n次。例如, "o "不匹配 "bob "中的 "o ",但是匹配 "foooood "中所有的o。 "o "等價於 "o+ "。 "o "等價於 "o* "。
:m 和 n 為非負的整數。匹配至少 n 次,至多 m 次。例如, "o " 匹配 "fooooood "中前三個o。 "o "等價於 "o? "。
[xyz] :乙個字符集。與括號中字元的其中之一匹配。例如, "[abc] " 匹 配 "plain "中的 "a "。
[^xyz] :乙個否定的字符集。匹配不在此括號中的任何字元。例如, "[^abc] " 可以匹配 "plain "中的 "p ".
[a-z] :表示某個範圍內的字元。與指定區間內的任何字元匹配。例如, "[a-z] "匹配 "a "與 "z "之間的任何乙個小寫字母字元。
[^m-z] :否定的字元區間。與不在指定區間內的字元匹配。例如, "[m-z] "與不 在 "m "到 "z "之間的任何字元匹配。
\b :與單詞的邊界匹配,即單詞與空格之間的位置。例如, "er\b " 與 "never "中的 "er "匹配,但是不匹配 "verb "中的 "er "。
\b :與非單詞邊界匹配。 "ea*r\b "與 "never early "中的 "ear "匹配。
\d :與乙個數字字元匹配。等價於[0-9]。
\d :與非數字的字元匹配。等價於[^0-9]。
\f :與分頁符匹配。
\n :與換行符字元匹配。
\r :與回車字元匹配。
\s :與任何白字元匹配,包括空格、製表符、分頁符等。等價於 "[
\f\n\r\t\v] "。
\s :與任何非空白的字元匹配。等價於 "[^ \f\n\r\t\v] "。
\t :與製表符匹配。
\v :與垂直製表符匹配。
\w :與任何單詞字元匹配,包括下劃線。等價於 "[a-za-z0-9_] "。
\w :與任何非單詞字元匹配。等價於 "[^a-za-z0-9_] "。
\num :匹配 num個,其中 num 為乙個正整數。引用回到記住的匹配。例如, "(.)\1 "匹配兩個連續的相同的字元。
\n:匹配 n,其中n 是乙個八進位製換碼值。八進位製換碼值必須是 1, 2 或 3 個數字長。
例如, "\11 " 和 "\011 " 都與乙個製表符匹配。 "\0011 "等價於 "\001 " 與 "1 "。八進位製換碼值不得超過 256。否則,只有前兩個字元被視為表示式的一部分。允許在正規表示式中使用ascii碼。
\xn:匹配n,其中n是乙個十六進製制的換碼值。十六進製製換碼值必須恰好為兩個數字長。例如, "\x41 "匹配 "a "。 "\x041 "等價於 "\x04 " 和 "1 "。允許在正規表示式中使用 ascii 碼。
接下來看看在具體的例子裡面如何使用這些方法和屬性來校驗資料的合法性,還是舉個例子吧,比如,想要對使用者輸入的電子郵件進行校驗,那麼,什麼樣的資料才算是乙個合法的電子郵件呢?可以這樣輸入:
[email protected],當然也會這樣輸入:***@yyy.com.cn,但是這樣的輸入就是非法的:***@@com.cn或者@***.com.cn,等等,所以得出乙個合法的電子郵件位址至少應當滿足以下幾個條件:
1. 必須包含乙個並且只有乙個符號「@」
2. 必須包含至少乙個至多三個符號「.」
3. 第乙個字元不得是「@」或者「.」
4. 不允許出現「@.」或者.@
5. 結尾不得是字元「@」或者「.」
所以根據以上的原則和上面表中的語法,很容易的就可以得到需要的模板如
下: "(\w)+[@](\w)+[.](\w)+ "
接下來仔細分析一下這個模板,首先「\w」表示郵件的開始字元只能是包含下劃線的單詞字元,這樣,滿足了第三個條件;「[@]」表示在電子郵件中應當匹配並且只能匹配一次字元「@」,滿足了條件一;同樣的
「[.]」表示在電子郵件中至少匹配1個至多匹配3個字元「.」,滿足了第二個條件;模板最後的「(\w)+」
表示結尾的字元只能是包含下劃線在內的單詞字元,滿足了條件五;模板中間的
「(\w)+」滿足了條件四。
然後,就直接呼叫剛才的那個函式checkexp( "(\w)+[@](\w)+[.]
(\w)+ ",待校驗的字串)就好了,如果返回true就表示資料是合法的,否則就是不正確的,怎麼樣,簡單吧。還可以寫出來校驗身份證號碼的模板: "([0-9])
";校驗url的模板: "^http://((\w)+[.]) "等等;可以看到,這些模板提供了很好的可重利用的模組,利用自己或者別人提供的各種模板,就可以方便快捷的進行資料的合法性校驗了,相信你一定會寫
出非常通用的模板的。
這樣,只要定製不同的模板,就可以實現對不同資料的合法性校驗了。所以,正規表示式物件中最重要的屬性就是:「pattern」屬性,只要真正掌握了這個屬性,才可以自由的運用正規表示式物件來為資料校驗進行服
務。
正規表示式相關 正規表示式字元描述
1 字元描述 將下乙個字元標記為特殊字元或字面值。例如 n 與字元 n 匹 配。n 與換行符匹配。序列 與 匹配,與 匹配。匹配輸入的開始位置。匹配輸入的結尾。匹配前乙個字元零次或幾次。例如,zo 可以匹配 z zoo 匹配前乙個字元一次或多次。例如,zo 可以匹配 zoo 但不匹配 z 匹配前乙個...
正規表示式 正規表示式 總結
非負整數 d 正整數 0 9 1 9 0 9 非正整數 d 0 負整數 0 9 1 9 0 9 整數 d 非負浮點數 d d 正浮點數 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 非正浮點數 d d 0 0 負浮點數 正浮點數正則式 英文本串 a za z...
python正規表示式元字元 正規表示式
字元 描述將下乙個字元標記為乙個特殊字元 或乙個原義字元 或乙個 向後引用 或乙個八進位制轉義符。例如,n 匹配字元 n n 匹配乙個換行符。序列 匹配 而 則匹配 匹配輸入字串的開始位置。如果設定了 regexp 物件的 multiline 屬性,也匹配 n 或 r 之後的位置。匹配輸入字串的結束...