前端正則表達式

說明
1.如下的驗證規則是在公司項目中總結出來的,有的規則可能不適合您須要自行修改規則。
2.這些規則是本身和同事之前寫的,可能不是最新,歡迎提出。html

經常使用類

用戶名

//用戶名正則,4到16位(字母,數字,下劃線,減號)
var uPattern = /^[a-zA-Z0-9_-]{4,16}$/;
//輸出 true 例如:xiaohua_qq
console.log(uPattern.test("caibaojian"));
複製代碼

密碼強度

//密碼強度正則,最少6位,包括至少1個大寫字母,1個小寫字母,1個數字,1個特殊字符
var pPattern = /^.*(?=.{6,})(?=.*\d)(?=.*[A-Z])(?=.*[a-z])(?=.*[!@#$%^&*? ]).*$/;
//輸出 true 例如:Kd@curry666
console.log(pPattern.test("Kd@curry666"));

// 弱密碼(長度是6位如下就算字母、數字、特殊字符三項都包括,強度也是弱的)
var pPattern1 = /(?=.{6,}).*$/;
// 輸出 true
console.log(pPattern1.test('asdf'))

// 中等強度密碼(密碼爲7位及以上,大小字母、數字三項中有兩項,特殊字符無關緊要)
var pPattern2 = /^(?=.{7,})(((?=.*[A-Z])(?=.*[a-z]))|((?=.*[A-Z])(?=.*[0-9]))|((?=.*[a-z])(?=.*[0-9]))).*$/;
// 輸出 true
console.log(pPattern2.test('adb123adg'))

// 強密碼(長度大於8,必須是字母大寫,字母小寫,數字,特殊字符組成)(暫未驗證)
var pPattern3 = /^(?=.{8,})(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*\\W).*$/;
// 輸出 true
console.log(pPattern3.test('Aa123##asd'))
複製代碼

純數字

// 純數字正則
var posPattern = /^\d{1,}$/;
//輸出 true 例如: 12345678
console.log(posPattern.test("42"));
複製代碼

是否由數字和字母組成

// 是否由數字和字母組成正則
var posPattern = /^[A-Za-z0-9]+$/;
//輸出 true 例如:james666, haha233hi
console.log(posPattern.test("james666"));
複製代碼

純英文字母

// 純英文字母正則
var posPattern = /^[a-zA-Z]+$/;
//輸出 true 例如:Russel
console.log(posPattern.test("Russel"));
複製代碼

純小寫英文字母組成

// 純小寫英文字母組成正則
var posPattern = /^[a-z]+$/;
//輸出 true 例如:russel
console.log(posPattern.test("russel"));
複製代碼

純大寫英文字母

// 純大寫英文字母正則
var posPattern = /^[A-Z]+$/;
//輸出 true 例如:ABC, KD
console.log(posPattern.test("ABC"));
複製代碼

只包含中文和數字

// 只包含中文和數字正則
var numP = /^((?:[\u3400-\u4DB5\u4E00-\u9FEA\uFA0E\uFA0F\uFA11\uFA13\uFA14\uFA1F\uFA21\uFA23\uFA24\uFA27-\uFA29]|[\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0])|(\d))+$/;
// 輸出 true 例如:哈哈哈, 你好6啊
console.log(numP.test("哈哈哈"));
複製代碼

不能包含字母

// 不能包含字母
var numP = /^[^A-Za-z]*$/;
// 輸出 true 例如:你好6啊, @¥()!
console.log(numP.test(" @¥()!"));
複製代碼

賬號是否合法(字母開頭,容許5-16字節,容許字母數字下劃線組合

// 賬號是否合法(字母開頭,容許5-16字節,容許字母數字下劃線組合正則
var numP = /^[a-zA-Z][a-zA-Z0-9_]{4,15}$/;
// 輸出true 例如:justin, justin1989,justin_666
console.log(numP.test("justin_666"));
複製代碼

純中文/漢字

// 純中文/漢正則
var numP = /^(?:[\u3400-\u4DB5\u4E00-\u9FEA\uFA0E\uFA0F\uFA11\uFA13\uFA14\uFA1F\uFA21\uFA23\uFA24\uFA27-\uFA29]|[\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0])+$/;
// 輸出true 例如:正則,前端
console.log(numP.test("正則"));
複製代碼

是否小數

// 是否小數正則
var numP = /^\d+\.\d+$/;
// 輸出true 例如:0.0,0.09
console.log(numP.test("0.09"));
複製代碼

整數正則

//正整數正則
var posPattern = /^\d+$/;
//負整數正則
var negPattern = /^-\d+$/;
//整數正則
var intPattern = /^-?\d+$/;
//輸出 true
console.log(posPattern.test("42"));
//輸出 true
console.log(negPattern.test("-42"));
//輸出 true
console.log(intPattern.test("-42"));
複製代碼

數字正則

能夠是整數也能夠是浮點數前端

//正數正則
var posPattern = /^\d*\.?\d+$/;
//負數正則
var negPattern = /^-\d*\.?\d+$/;
//數字正則
var numPattern = /^-?\d*\.?\d+$/;
console.log(posPattern.test("42.2"));
console.log(negPattern.test("-42.2"));
console.log(numPattern.test("-42.2"));
複製代碼

Email

//Email正則
var ePattern = /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;
//輸出 true 例如:27222722@qq.com, ninini@163.com
console.log(ePattern.test("ninini@163.com"));
複製代碼

國內手機號

// 中國手機號(嚴謹), 根據工信部2019年最新公佈的手機號段
var numP = /^(?:(?:\+|00)86)?1(?:(?:3[\d])|(?:4[5-7|9])|(?:5[0-3|5-9])|(?:6[5-7])|(?:7[0-8])|(?:8[\d])|(?:9[1|8|9]))\d{8}$/;
//輸出 true 例如:008618311006933, +8617888829981, 19119255642
console.log(numP.test("19119255642"));


// 中國手機號(寬鬆), 只要是13,14,15,16,17,18,19開頭便可
var mPattern = /^(?:(?:\+|00)86)?1[3-9]\d{9}$/;
//輸出 true 例如:008618311006933, +8617888829981, 19119255642
console.log(mPattern.test("19119255642"));


// 中國手機號(最寬鬆), 只要是1開頭便可, 若是你的手機號是用來接收短信, 優先建議選擇這一條
var numP1 = /^(?:(?:\+|00)86)?1\d{10}$/;
//輸出 true 例如:008618311006933, +8617888829981, 19119255642
console.log(numP1.test("19119255642"));


//http://caibaojian.com/regexp-example.html
複製代碼
  • 規則說明:git

    國內手機號碼爲11位數字,前兩位只能爲: 13 \ 14 \ 15 \ 17 \ 18es6

  • 三大運營商號段分配狀況github

號段 可選值
中國移動
13x 134X(0-8)、13五、13六、13七、13八、139
14x 147(數據卡)
15x 150、15一、15二、157X(0-7\9)(TD)、15八、159
17x 182 、18三、18四、187(3G\4G)、188(3G)
18x 分機號無關緊要
19x 98(2017-08-16 說明見附錄一)
中國聯通
13x 130、13一、132
14x 145(數據卡)
15x 15五、156
17x 176(4G)
18x 185(3G)、186(3G)
16x 166(2017-08-16 說明見附錄一)
中國電信
13x 13三、(1349衛通)
15x 153
17x 177(4G)、173(最近剛開通)
18x 180(3G)、181(3G)、189(3G)
19x 199(2017-08-16 說明見附錄一)
虛擬運營商
170 -

國內座機號

// 座機號正則(能夠不須要區號)
var mPhone = /^(0\d{2,3})?(-)?\d{7,8}(-\d{1,6})?$/;
//輸出 true 例如:23091234
console.log(mPhone.test("23091234"));

// 國內座機電話,如: 0341-86091234
var mPhone = /\d{3}-\d{8}|\d{4}-\d{7}/;
//輸出 true 例如:0936-4211235
console.log(mPhone.test("0936-4211235"));
複製代碼
  • 規則說明:

    TIP
    格式:區號-號碼-分機號微信

類型 說明 備註
區號 區號以0開頭,3位或4位
號碼 號碼由7位或8位數字組成
機號 分機號碼由1-6位數字組成
區號與號碼之間能夠無鏈接符,也能夠「-」鏈接
分機號無關緊要

一代身份證號(15位數字)

// 一代身份證號(15位數字)正則
var numP = /^\d{8}(0\d|10|11|12)([0-2]\d|30|31)\d{3}$/;
// 輸出 true 例如:622001790131123
console.log(numP.test("622001790131123"));
複製代碼

二代身份證號(18位數字),最後一位是校驗位,可能爲數字或字符X

// 二代身份證號(18位數字),最後一位是校驗位,可能爲數字或字符X正則
var nump = /^\d{6}(18|19|20)\d{2}(0\d|10|11|12)([0-2]\d|30|31)\d{3}(\d|X|x)$/;
// 輸出 true 例如:62222319991205131x
console.log(nump.test("62222319991205131x"));
複製代碼

身份證號, 支持1/2代(15位/18位數字)

// 身份證號, 支持1/2代(15位/18位數字)正則
var nump = /(^\d{8}(0\d|10|11|12)([0-2]\d|30|31)\d{3}$)|(^\d{6}(18|19|20)\d{2}(0\d|10|11|12)([0-2]\d|30|31)\d{3}(\d|X|x)$)/;
// 輸出 true 例如:622223199912051311
console.log(nump.test("622223199912051311"));
複製代碼

參考資料markdown

說明
一代身份證自2013年1月1日起中止使用
全國公民身份證號碼查詢服務中心jsp

日期

var a = /^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29))$/;

//日期正則,簡單斷定,未作月份及日期的斷定
var dP1 = /^\d{4}(\-)\d{1,2}\1\d{1,2}$/;
//輸出 true
console.log(dP1.test("2017-05-11"));
//輸出 true
console.log(dP1.test("2017-15-11"));


//日期正則,複雜斷定
var dP2 = /^(?:(?!0000)[0-9]{4}-(?:(?: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]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$/;
//輸出 true
console.log(dP2.test("2017-02-11"));
//輸出 false
console.log(dP2.test("2017-15-11"));
//輸出 false
console.log(dP2.test("2017-02-29"));
複製代碼

ip-v4

// ipv4地址正則 iPv4:(1~255).(0~255).(0~255).(0~255)的格式
var ipP = /^(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|[1-9])\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)$/;
//輸出 true 例如:172.16.0.0, 127.0.0.0
console.log(ipP.test("115.28.47.26"));
複製代碼

ip-v6

// ipv6地址正則
var ipP = /^((([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))$/i;
//輸出 true 例如:2031:0000:130f:0000:0000:09c0:876a:130b
console.log(ipP.test("2031:0000:130f:0000:0000:09c0:876a:130b"));
複製代碼

16進制顏色

//16進制顏色正則
var colorP = /^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/;
//輸出 true 例如:#f00, #F90, #00, #fe9de8
console.log(colorP.test("#fe9de8"));
複製代碼

中國郵政編碼

//中國郵政編碼正則
var colorP = /^(0[1-7]|1[0-356]|2[0-7]|3[0-6]|4[0-7]|5[1-7]|6[1-7]|7[0-5]|8[013-6])\d{4}$/;
//輸出 true 例如:734500, 100101
console.log(colorP.test("734500"));
複製代碼

QQ號碼

//QQ號碼正則
var qqP = /^[1-9][0-9]{4,10}$/;
//輸出 true 例如:903013545, 9020304
console.log(qqP.test("12345"));
複製代碼

微信號

//6至20位,以字母開頭,字母,數字,減號,下劃線
var weCP = /^[a-zA-Z][-_a-zA-Z0-9]{5,19}$/;
//輸出 true 例如:github666, kd_-666
console.log(weCP.test("wexin123_-"));
複製代碼

各種證件號碼

車牌號

/** * 常規車牌號(僅容許以漢字開頭,後面可錄入六個字符,由大寫英文字母和阿拉伯數字組成。如:粵B12345) * 最後一個爲漢字的車牌(最後一個字符爲漢字,漢字包括掛、學、警、港、澳。如:粵Z1234港) * 新軍車牌(以兩位爲大寫英文字母開頭,後面以5位阿拉伯數字組成。如:BA12345。) * 綠色車牌號(新能源車專用車牌)(2017年新車牌類型,僅容許以漢字開頭,後面可錄入七個字符,由大寫英文字母和阿拉伯數字組成。如:粵B123456) */
//車牌號正則
var reg = /^[京津滬渝冀豫雲遼黑湘皖魯新蘇浙贛鄂桂甘晉蒙陝吉閩貴粵青藏川寧瓊使領A-Z]{1}[A-Z]{1}[A-Z0-9]{4}[A-Z0-9掛學警港澳]{1}$/;
var reg2 =/^[京津滬渝冀豫雲遼黑湘皖魯新蘇浙贛鄂桂甘晉蒙陝吉閩貴粵青藏川寧瓊使領A-Z]{1}[A-Z]{1}[A-Z0-9]{6}$/;
//輸出 true
console.log(reg.test("粵B39006"));
複製代碼

港澳通行證

// 港澳通行證正則
var reg = /^[CW]\d{8}$/;
// 輸出 true
console.log(reg.test("C00000000"));
複製代碼
類型 說明 備註
開頭是大寫的英文C或者W C表示電子版的,也就是電子卡。W表示辦的本子
後面是8位數字

參考資料oop

中華人民共和國往來港澳通行證編碼

連接

迅雷連接

// 迅雷連接正則
var linkP = /^thunder:\/\/[a-zA-Z0-9]+=$/;
// 輸出 true 例如: thunder://QUEsICdtYWduZXQ6P3h0PXVybjpidGloOjBCQTE0RTUxRkUwNjU1RjE0Qzc4NjE4RjY4NDY0QjZFNTEyNjcyOUMnWlo=
console.log(linkP.test("thunder://QUEsICdtYWduZXQ6P3h0PXVybjpidGloOjBCQTE0RTUxRkUwNjU1RjE0Qzc4NjE4RjY4NDY0QjZFNTEyNjcyOUMnWlo="))
複製代碼

ed2k連接(寬鬆匹配)

// ed2k連接(寬鬆匹配)正則
var linkP = /^ed2k:\/\/|file|.+|\/$/;
// 輸出 true 例如: ed2k://|file|%E5%AF%84%E7%94%9F%E8%99%AB.PARASITE.2019.HD-1080p.X264.AAC-UUMp4(ED2000.COM).mp4|2501554832|C0B93E0879C6071CBED732C20CE577A3|h=5HTKZPQFYRKORN52I3M7GQ4QQCIHFIBV|/
console.log(linkP.test("ed2k://|file|%E5%AF%84%E7%94%9F%E8%99%AB.PARASITE.2019.HD-1080p.X264.AAC-UUMp4(ED2000.COM).mp4|2501554832|C0B93E0879C6071CBED732C20CE577A3|h=5HTKZPQFYRKORN52I3M7GQ4QQCIHFIBV|/"))
複製代碼

磁力連接(寬鬆匹配)

// 磁力連接(寬鬆匹配)正則
var linkP = /^magnet:\?xt=urn:btih:[0-9a-fA-F]{40,}.*$/;
// 輸出 true 例如: magnet:?xt=urn:btih:40A89A6F4FB1498A98087109D012A9A851FBE0FC
console.log(linkP.test("magnet:?xt=urn:btih:40A89A6F4FB1498A98087109D012A9A851FBE0FC"))
複製代碼

子網掩碼

// 子網掩碼正則
var linkP = /^(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])(?:\.(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])){3}$/;
// 輸出 true 例如: 255.255.255.0, 255.224.0.0
console.log(linkP.test("255.255.255.0"))
複製代碼

本文將會陸續收集前端表單中的正則驗證...

相關文章
相關標籤/搜索