正規表示式

2021-09-14 03:44:19 字數 4736 閱讀 6746

正規表示式是對字串操作的一種邏輯公式。

正規表示式是一種文字模式,模式描述在搜尋文字時要匹配的乙個或多個字串。

正規表示式由普通字元和元字元(metacharacters)組成。

"^":^會匹配行或者字串的起始位置,有時還會匹配整個文件的起始位置。

"$":$ 會匹配行或字串的結尾。

"b":不會消耗任何字元只匹配乙個位置,常用於匹配單詞邊界。

如 我想從字串中"this is re"單獨匹配的單詞 "is" 正則就要寫成 "bisb";不會匹配is 兩邊的字元,但它會識別is 兩邊是否為單詞的邊界。

"d": 匹配數字。

如 要匹配乙個固定格式的**號碼以0開頭前4位後7位,如 020-1234567 正則:^0ddd-ddddddd$

"w":匹配字母,數字,下劃線。

如 我要匹配"a2345bcd__ttz" 正則:"w+" 這裡的"+"字元為乙個量詞指重複的次數,稍後會詳細介紹。

"s":匹配空格。

如 字元 "a b c" 正則:"wswsw" 乙個字元後跟乙個空格,如有字元間有多個空格直接把"s" 寫成 "s+" 讓空格重複。

".":匹配除了換行符以外的任何字元。

"[abc]": 字元組,匹配包含括號內元素的字元。

如 [abc]只匹配括號內存在的字元,還可以寫成[a-z]匹配a至z的所有字母。

大寫^

"w":匹配任意不是字母,數字,下劃線 的字元。

"s":匹配任意不是空白符的字元。

"d":匹配任意非數字的字元。

"b":匹配不是單詞開頭或結束的位置。

"[^abc]":匹配除了abc以外的任意字元。

在一定範圍,限定匹配多少次。

"*":匹配0~多次。如 "aaaabbbb" 正則 "a*" 得 "aaa"

"+":匹配1~多次。如 "aaaabbbb" 正則 "a+" 得 "aaa"

"?":匹配0~1次。如 "aaaabbbb" 正則 "a?" 得 "a"

"":匹配n次。如 "aaaabbbb" 正則 "a" 得 "aaa"

"":匹配n到m次。如 正則 "a" 得 "aa"或者"aaa"取決於所給引數(值含a≥2)

"":匹配n到多次。如 正則 "a" 得出的值a至少出現2次(值含a≥2)

分組:起別名 存 正則。

捕獲:使用存起來的正則。

"(re)":匹配正則,並預設存分組。

"(?re)":匹配正則,並別名存分組。

"(?:re)":匹配正則,不分組,不獲取。

"(?=re)":匹配正則前面的位置。也叫零寬度正**先行斷言。

"(?<=re)":匹配正則後面的位置。也叫零寬度正回顧後發斷言。

"(?!re)":匹配後面跟的不是正則的位置。

"(?用於查詢在某些內容(但並不包括這些內容)之前或之後的東西,也就是說它們像b,^,$那樣用於指定乙個位置,這個位置應該滿足一定的條件(即斷言),因此它們也被稱為零寬斷言。最好還是拿例子來說明吧: 斷言用來宣告乙個應該為真的事實。正規表示式中只有當斷言為真時才會繼續進行匹配。

密碼的強度必須是包含大小寫字母和數字的組合,不能使用特殊字元,長度在8-10之間。

^(?=.*\\d)(?=.*[a-z])(?=.*[a-z]).$
字串僅能是中文。

^[\\u4e00-\\u9fa5]$
^\\w+$
同密碼一樣,下面是e-mail位址合規性的正則檢查語句。

[\\w!#$%&'*+/=?^_`~-]+(?:\\.[\\w!#$%&'*+/=?^_`~-]+)*@(?:[\\w](?:[\\w-]*[\\w])?\\.)+[\\w](?:[\\w-]*[\\w])?
15位。

^[1-9]\\d((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d$
18位

^[1-9]\\d[1-9]\\d((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d([0-9]|x)$
「yyyy-mm-dd「 格式的日期校驗,已考慮平閏年。

^(?:(?!0000)[0-9]-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9](?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$
金額校驗,精確到2位小數。

^[0-9]+(.[0-9])?$
下面是國內 13、15、18開頭的手機號正規表示式。(可根據目前國內收集號擴充套件前兩位開頭號碼)

^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\\d$
ie目前還沒被完全取代,很多頁面還是需要做版本相容,下面是ie版本檢查的表示式。

^.*msie [5-8](?:\\.[0-9]+)?(?!.*trident\\/[5-9]\\.0).*$
ip4 正則語句。

\\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.)(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\b
(([0-9a-fa-f]:)[0-9a-fa-f]|([0-9a-fa-f]:):|([0-9a-fa-f]:):[0-9a-fa-f]|([0-9a-fa-f]:)(:[0-9a-fa-f])|([0-9a-fa-f]:)(:[0-9a-fa-f])|([0-9a-fa-f]:)(:[0-9a-fa-f])|([0-9a-fa-f]:)(:[0-9a-fa-f])|[0-9a-fa-f]:((:[0-9a-fa-f]))|:((:[0-9a-fa-f])|:)|fe80:(:[0-9a-fa-f])%[0-9a-za-z]|::(ffff(:0):)((25[0-5]|(2[0-4]|1[0-9])[0-9])\\.)(25[0-5]|(2[0-4]|1[0-9])[0-9])|([0-9a-fa-f]:):((25[0-5]|(2[0-4]|1[0-9])[0-9])\\.)(25[0-5]|(2[0-4]|1[0-9])[0-9]))
應用開發中很多時候需要區分請求是https還是http,通過下面的表示式可以取出乙個url的字首然後再邏輯判斷。

if (!s.match(/^[a-za-z]+:\\/\\//))

下面的這個表示式可以篩選出一段文字中的url。

^(f|ht)(tp|tps):\\/\\/([\\w-]+\\.)+[\\w-]+(\\/[\\w- ./?%&=]*)?
驗證windows下檔案路徑和副檔名(下面的例子中為.txt檔案)

^([a-za-z]\\:|\\\\)\\\\([^\\\\]+\\\\)*[^\\/:*?"<>|]+\\.txt(l)?$
有時需要抽取網頁中的顏色**,可以使用下面的表示式。

^#([a-fa-f0-9]|[a-fa-f0-9])$
假若你想提取網頁中所有資訊,可以利用下面的表示式。

\\< *[img][^\\\\>]*[src] *= *[\\"\\']([^\\"\\'\\ >]*)
提取html中的超連結。

(]*)(href="https?:\\/\\/)((?!(?:(?:www\\.)?'.implode('|(?:www\\.)?', $follow_list).'))[^"]+)"((?!.*\\brel=)[^>]*)(?:[^>]*)>
通過下面的表示式,可以搜尋到相匹配的css屬性。

^\\s*[a-za-z\\-]+\\s*[:]\\s[a-za-z0-9\\s.#]+[;]
如果你需要移除hmtl中的注釋,可以使用如下的表示式。

通過下面的表示式可以匹配出html中的標籤屬性。

<\\/?\\w+((\\s+\\w+(\\s*=\\s*(?:".*?"|'.*?'|[\\^'">\\s]+))?)+\\s*|\\s*)\\/?>

正規表示式 正規表示式 總結

非負整數 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...

正規表示式 表示式

網域名稱 a za z0 9 a za z0 9 a za z0 9 a za z0 9 interneturl a za z s 或 http w w w 手機號碼 13 0 9 14 5 7 15 0 1 2 3 5 6 7 8 9 18 0 1 2 3 5 6 7 8 9 d 號碼 x x x...

Linux正規表示式 編寫正規表示式

為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...