經常使用正則表達式

1. 建立 RegExp 對象的語法:

方式1:new RegExp(pattern, attributes);javascript

方式2:/pattern/attributescss

參數 說明
pattern 是一個字符串,指定了正則表達式的模式或其餘正則表達式。
attributes 是一個可選的字符串,包含屬性 "g"、"i" 和 "m",分別用於指定全局匹配、區分大小寫的匹配和多行匹配。ECMAScript 標準化以前,不支持 m 屬性。若是 pattern 是正則表達式,而不是字符串,則必須省略該參數。

1.1 方括號,用於查找某個範圍內的字符:

表達式 描述
[abc] 查找方括號之間的任何字符。
[^abc] 查找任何不在方括號之間的字符。
[0-9] 查找任何從 0 至 9 的數字。
[a-z] 查找任何從小寫 a 到小寫 z 的字符。
[A-Z] 查找任何從大寫 A 到大寫 Z 的字符。
[A-z] 查找任何從大寫 A 到小寫 z 的字符。
[adgk] 查找給定集合內的任何字符。
[^adgk] 查找給定集合外的任何字符。

1.2 元字符,是擁有特殊含義的字符:

元字符 描述
. 查找單個字符,除了換行和行結束符。
\w 查找單詞字符。
\W 查找非單詞字符。
\d 查找數字。
\D 查找非數字字符。
\s 查找空白字符。
\S 查找非空白字符。
\b 匹配單詞邊界。
\B 匹配非單詞邊界。
\0 查找 NUL 字符。
\n 查找換行符。
\f 查找換頁符。
\r 查找回車符。
\t 查找製表符。
\v 查找垂直製表符。
\xxx 查找以八進制數 xxx 規定的字符。
\xdd 查找以十六進制數 dd 規定的字符。
\uxxxx 查找以十六進制數 xxxx 規定的 Unicode 字符。

1.3 量詞

量詞 描述
n+ 匹配任何包含至少一個 n 的字符串。
n* 匹配任何包含零個或多個 n 的字符串。
n? 匹配任何包含零個或一個 n 的字符串。
n{X} 匹配包含 X 個 n 的序列的字符串。
n{X,Y} 匹配包含 X 至 Y 個 n 的序列的字符串。
n{X,} 匹配包含至少 X 個 n 的序列的字符串。
n$ 匹配任何結尾爲 n 的字符串。
^n 匹配任何開頭爲 n 的字符串。
?=n 匹配任何其後緊接指定字符串 n 的字符串。
?!n 匹配任何其後沒有緊接指定字符串 n 的字符串。

1.4 RegExp 對象方法

方法 描述
compile 編譯正則表達式。
exec 檢索字符串中指定的值。返回找到的值,並肯定其位置。
test 檢索字符串中指定的值。返回 true 或 false。

1.5 支持正則表達式的 String 對象的方法

方法 描述
search 檢索與正則表達式相匹配的值。
match 找到一個或多個正則表達式的匹配。
replace 替換與正則表達式匹配的子串。
split 把字符串分割爲字符串數組。

1.6 正則表達式學習口訣

  • 正則其實也勢利,削尖頭來把錢揣 (指開始符號^和結尾符號$)java

  • 特殊符號認不了,弄個倒槓來引路 (指\. \*等特殊符號)android

  • 倒槓後面跟小w, 數字字母來表示 (\w跟數字字母;\d跟數字)web

  • 倒槓後面跟小d, 只有數字來表示正則表達式

  • 倒槓後面跟小a, 報警符號嘀一聲chrome

  • 倒槓後面跟小b, 單詞分界或退格windows

  • 倒槓後面跟小t, 製表符號很明瞭數組

  • 倒槓後面跟小r, 回車符號知道了瀏覽器

  • 倒槓後面跟小s, 空格符號很重要

  • 小寫跟罷跟大寫,多得實在不得了

  • 倒槓後面跟大W, 字母數字靠邊站

  • 倒槓後面跟大S, 空白也就靠邊站

  • 倒槓後面跟大D, 數字今後靠邊站

  • 倒框後面跟大B, 不含開頭和結尾

  • 單個字符要重複,三個符號來幫忙 (* + ?)

  • 0 星加1 到無窮,問號只管0 和1 (*表0-n;+表1-n;?表0-1次重複)

  • 花括號裏學問多,重複操做能力強 ({n} {n,} {n,m})

  • 若要重複字符串,園括把它括起來 ((abc){3} 表示字符串「abc」重複3次 )

  • 特殊集合自定義,中括號來幫你忙

  • 轉義符號行不通,一個一個來排隊

  • 實在多得排不下,橫槓請來幫個忙 ([1-5])

  • 尖頭放進中括號,反義定義威力大 ([^a]指除「a」外的任意字符 )

  • 1豎做用可不小,兩邊正則互替換 (鍵盤上與「\」是同一個鍵)

  • 1豎能用不少次,複雜定義很方便

  • 園括號,用途多

  • 反向引用指定組,數字排符對應它 (「\b(\w+)\b\s+\1\b」中的數字「1」引用前面的「(\w+)」)

  • 支持組名自定義,問號加上尖括號 (「(?\w+)」中把「\w+」定義爲組,組名爲「Word」)

  • 園括號,用途多,位置指定全靠它

  • 問號等號字符串,定位字符串前面 (「\b\w+(?=ing\b)」定位「ing」前面的字符串)

  • 若要定位串後面,中間插個小於號 (「(?<=\bsub)\w+\b」定位「sub」後面的字符串)

  • 問號加個驚歎號,後面跟串字符串

  • PHPer都知道, !是取反的意思

  • 後面不跟這一串,通通符合來報到 (「\wd(?!og)\w」,「dog」不符合,「do」符合)

  • 問號小於驚歎號,後面跟串字符串

  • 前面不放這一串,通通符合來報到

  • 點號星號很貪婪,加個問號不貪婪

  • 加號問號有保底,至少重複一次多

  • 兩個問號老規矩,0次1次團團轉

  • 花括號後跟個?,貪婪變成不貪婪

  • 還有不少裝不下,等着之後來增長。

2. 經常使用正則表達式

2.1 社交

郵箱

var isMail = /\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/;
var isMail = /^([A-Za-z0-9_\-\.\u4e00-\u9fa5])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,8})$/;
複製代碼

手機號

集號吧:https://www.jihaoba.com/tools/haoduan/

時間截止爲:2018年1月11日

移動號段:134 135 136 137 138 139 147 148 150 151 152 157 158 159 172 178 182 183 184 187 188 198
聯通號段:130 131 132 145 146 155 156 166 171 175 176 185 186
電信號段:133 149 153 173 174 177 180 181 189 199
虛擬運營商:170

var isMobile = /^(13[0-9]|14[5-9]|15[012356789]|166|17[0-8]|18[0-9]|19[8-9])[0-9]{8}$/;  
複製代碼

固定電話

var isTel = /^(\+\d{2}-)?0\d{2,3}-\d{7,8}$/;
var isTel = /(\(\d{3,4}\)|\d{3,4}-|\s)?\d{8}/;
複製代碼

QQ號碼

var isQQ = /^[1-9][0-9]{4,10}$/;
複製代碼

微信號碼

微信號正則,6至20位,以字母開頭,字母,數字,減號,下劃線

var isWeixin = /^[a-zA-Z]([-_a-zA-Z0-9]{5,19})+$/;
複製代碼

2.2 字符

字符串爲空

var isEmpty = /^\s*$/;
複製代碼

純中文

var isCn = /^[\u4e00-\u9fa5]+$/;
複製代碼

英文字母

var isEn = /^[a-z]+$/i;
複製代碼

大寫英文字母

var isEn = /^[A-Z]+$/;
複製代碼

字母和數字

var isEnAndNum = /^[a-z0-9]+$/i;
複製代碼

英文、數字、下劃線

var isStr = /^\w+$/;
複製代碼

用戶名

用戶名正則,4到16位(字母,數字,下劃線,減號)

var isUsername = /^[a-zA-Z0-9_-]{4,16}$/;
複製代碼

密碼

密碼正則,以字母開頭,長度在6~18之間,只能包含字母、數字和下劃線

var isPwd =/^[a-zA-Z]\w{5,17}$/;
複製代碼

強密碼正則,最少6位,包括至少1個大寫字母,1個小寫字母,1個數字,1個特殊字符

var isPwd = /^.*(?=.{6,})(?=.*\d)(?=.*[A-Z])(?=.*[a-z])(?=.*[!@#$%^&*? ]).*$/;
複製代碼

特殊字符檢測

特殊字符:["'<>%;)(&+]+-!!@#$~

var isSchar = /["'<>%;)(&+]+-!!@#$~/;
複製代碼

2.3 數字

數字

var isNum = /(^-?[0-9]\d*$)/;
var isNum = /^\d+$/;
複製代碼

n個數字

var isNum = /^\d{n}$/;
複製代碼

n個以上數字

var isNum = /^\d{n,}$/;
複製代碼

m至n個數字

var isNum = /^\d{m,n}$/;
複製代碼

2.4 網絡

url地址

var isUrl = /^https?:\/\/(([a-zA-Z0-9_-])+(\.)?)*(:\d+)?(\/((\.)?(\?)?=?&?[a-zA-Z0-9_-](\?)?)*)*$/i;
複製代碼

域名

var isDomain = /^(?=^.{3,255}$)[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+$/;
複製代碼

IP地址

var isIP = /\d+\.\d+\.\d+\.\d+/;
複製代碼

2.5 地理位置

郵政編碼

var isMailCode = /[1-9]{1}(\d+){5}/;
var isMailCode = /^[1-9]\d{5}(?!\d)$/;
複製代碼

經緯度

經度正則

var isLong = /^(\-|\+)?(((\d|[1-9]\d|1[0-7]\d|0{1,3})\.\d{0,6})|(\d|[1-9]\d|1[0-7]\d|0{1,3})|180\.0{0,6}|180)$/;
複製代碼

緯度正則

var isLat = /^(\-|\+)?([0-8]?\d{1}\.\d{0,6}|90\.0{0,6}|[0-8]?\d{1}|90)$/;
複製代碼

2.6 社會屬性

姓名

張三/長·你·三/Name/Name Black 中文名字長度限制在10,英文名字長度限制在10

var name = /(^[\u4e00-\u9fa5]{1}[\u4e00-\u9fa5\.·。]{0,8}[\u4e00-\u9fa5]{1}$)|(^[a-zA-Z]{1}[a-zA-Z\s]{0,8}[a-zA-Z]{1}$)/;
複製代碼

身份證號

第一代身份證只有15位數,第二代身份證有18位數,各位按照需求來選擇表達式。

第1、二代身份證

var isIdCard = /^(^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$)|(^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[Xx])$)$/;
複製代碼

第一代身份證(15位)

var isIdCard = /^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/;
複製代碼

第二代身份證

var isIdCard = /^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/;
複製代碼

護照

var isIdCard = /^(P\d{7}|G\d{7,8}|TH\d{7,8}|S\d{7,8}|A\d{7,8}|L\d{7,8}|\d{9}|D\d+|1[4,5]\d{7})$/;
複製代碼

統一社會信用代碼

參照標準:
《GB_32100-2015_法人和其餘組織統一社會信用代碼編碼規則.》
按照編碼規則:
標準規定統一社會信用代碼用18位阿拉伯數字或大寫英文字母(不適用I、O、Z、S、V)表示,分別是1位登記管理部門代碼、1位機構類別代碼、6位登記管理機關行政區劃碼、9位主體標識碼、1位校驗碼。
第一部分(第1位)爲登記管理部門代碼,9表示工商部門;(數字或大寫英文字母)
第二部分(第2位)爲機構類別代碼;(數字或大寫英文字母)
第三部分(第3-8位)爲登記管理機關行政區劃碼;(數字)
第四部分(第9-17位)爲全國組織機構代碼;(數字或大寫英文字母)
第五部分(第18位)爲校驗碼(數字或大寫英文字母)

var isOrgCode = /^([0-9ABCDEFGHJKLMNPQRTUWXY]{2})(\d{6})([0-9ABCDEFGHJKLMNPQRTUWXY]{9})([0-9ABCDEFGHJKLMNPQRTUWXY])$/;
var isOrgCode = /^[^_IOZSVa-z\W]{2}\d{6}[^_IOZSVa-z\W]{10}$/g
複製代碼

營業執照註冊號

var isBusinessRegNo = /(^(?:(?![IOZSV])[\dA-Z]){2}\d{6}(?:(?![IOZSV])[\dA-Z]){10}$)|(^\d{15}$)/;
複製代碼

不動產單元號

var isCode = /^\d{12}[GJZ][ABSXCDEFGHWY]\d{4}[1-9][FLQW]\d{7}[1-9]$/;
複製代碼

組織機構代碼

全國組織機構代碼由八位數字(或大寫拉丁字母)本體代碼和一位數字(或大寫拉丁字母)校驗碼組成。

var isOrgCode = /[A-Za-z0-9]{8}-[A-Za-z0-9]$/;
複製代碼

車牌號碼

var isCar = /^[京津滬渝冀豫雲遼黑湘皖魯新蘇浙贛鄂桂甘晉蒙陝吉閩貴粵青藏川寧瓊使領A-Z]{1}[A-Z]{1}[A-Z0-9]{4}[A-Z0-9掛學警港澳]{1}$/;
複製代碼

2.7 日期

匹配yyyy-MM-dd

var isDate = /^[1-2][0-9][0-9][0-9]-[0-1]{0,1}[0-9]-[0-3]{0,1}[0-9]$/;
複製代碼

2.8 瀏覽器navigator.userAgent

從UA判斷是否爲IE瀏覽器

var userAgent = /msie (\d+\.\d+)/i;
複製代碼

從UA判斷是否爲webkit內核

var userAgent = /webkit/i;
複製代碼

從UA判斷是否爲chrome瀏覽器

var userAgent = /chrome\/(\d+\.\d+)/i;
複製代碼

從UA判斷是否爲firefox瀏覽器

var userAgent = /firefox\/(\d+\.\d+)/i;
複製代碼

從UA判斷是否爲opera瀏覽器

var userAgent = /opera(\/| )(\d+(\.\d+)?)(.+?(version\/(\d+(\.\d+)?)))?/i;
複製代碼

從UA判斷是否爲Safari瀏覽器

var userAgent = /(\d+\.\d)?(?:\.\d)?\s+safari\/?(\d+\.\d+)?/i;
複製代碼

從UA中判斷是否爲Android系統

var userAgent = /android/i;
複製代碼

從UA中判斷是否爲iPad

var userAgent = /ipad/i;
複製代碼

從UA中判斷是否爲iPhone

var userAgent = /iphone/i;
複製代碼

從UA判斷是否爲Mac OS平臺

var userAgent = /macintosh/i;
複製代碼

從UA中判斷是否爲Windows平臺

var userAgent = /windows/i;
複製代碼

從UA中判斷是否爲移動終端

var userAgent = /(nokia|iphone|android|ipad|motorola|^mot\-|softbank|foma|docomo|kddi|up\.browser|up\.link|htc|dopod|blazer|netfront|helio|hosin|huawei|novarra|CoolPad|webos|techfaith|palmsource|blackberry|alcatel|amoi|ktouch|nexian|samsung|^sam\-|s[cg]h|^lge|ericsson|philips|sagem|wellcom|bunjalloo|maui|symbian|smartphone|midp|wap|phone|windows ce|iemobile|^spice|^bird|^zte\-|longcos|pantech|gionee|^sie\-|portalmmm|jig\s browser|hiptop|^ucweb|^benq|haier|^lct|opera\s*mobi|opera\*mini|320x320|240x320|176x220)/i;
複製代碼
相關文章
相關標籤/搜索