最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

常用JavaScript正則表達(dá)式匯編與示例詳解

 更新時(shí)間:2019年04月24日 10:06:04   作者:@毛瑞  
目前收集整理了21個(gè)常用的javaScript正則表達(dá)式,其中包括用戶名、密碼強(qiáng)度、整數(shù)、數(shù)字、電子郵件地址(Email)、手機(jī)號(hào)碼、身份證號(hào)、URL地址、 IP地址、 十六進(jìn)制顏色、 日期、 微信號(hào)、車牌號(hào)、中文正則等。感興趣的朋友一起看看吧

1.1 前言

目前收集整理了21個(gè)常用的javaScript正則表達(dá)式,其中包括用戶名、密碼強(qiáng)度、整數(shù)、數(shù)字、電子郵件地址(Email)、手機(jī)號(hào)碼、身份證號(hào)、URL地址、 IP地址、 十六進(jìn)制顏色、 日期、 微信號(hào)、車牌號(hào)、中文正則等。表單驗(yàn)證處理必備,趕緊收藏吧!

還會(huì)陸續(xù)加入新的正則進(jìn)來,大家多提寶貴意見!

2.1 用戶名正則

2.1.1 基本用戶名正則

在做用戶注冊(cè)時(shí),都會(huì)用到用戶名正則校驗(yàn)。

定義基本用戶名命名規(guī)則如下:

  1. 最短4位,最長16位 {4,16}
  2. 可以包含小寫大母 [a-z] 和大寫字母 [A-Z]
  3. 可以包含數(shù)字 [0-9]
  4. 可以包含下劃線 [ _ ] 和減號(hào) [ - ]
  5. 首字母只能是大小寫字母
var pattern = /^[a-zA-Z][a-zA-Z0-9_-]{3,15}$/;
//輸出 true
console.log("ifat3 : "+pattern.test('ifat3'));
//輸出 true
console.log("Ifat3 : "+pattern.test('Ifat3'));
//輸出 true
console.log("ke30 : "+pattern.test('ke30'));
//輸出 false
console.log("30ke : "+pattern.test('30ke'));
//輸出 false
console.log("ke3 : "+pattern.test('ke3'));
輸出 false
console.log("ke30@ : "+pattern.test('ke30@'));
//輸出 false
console.log("ke30ke30ke30ke30ke30 : "+pattern.test('ke30ke30ke30ke30ke30'));

2.1.2 中文用戶名正則

如果規(guī)則中加入允許中文用戶名,則變更正則表達(dá)式如下:

var pattern = /^[a-zA-Z\u4E00-\u9FA5][a-zA-Z0-9\u4E00-\u9FA5_-]{3,15}$/;
//輸出 true
console.log("ifat3 : "+pattern.test('ifat3'));
//輸出 true
console.log("Ifat3 : "+pattern.test('Ifat3'));
//輸出 true
console.log("三十課毛瑞 : "+pattern.test('三十課毛瑞'));
//輸出 false
console.log("30ke : "+pattern.test('30ke'));
//輸出 false
console.log("ke3 : "+pattern.test('ke3'));
//輸出 false
console.log("ke30@ : "+pattern.test('ke30@'));
 //輸出 false
console.log("ke30ke30ke30ke30ke30 : "+pattern.test('ke30ke30ke30ke30ke30'));

其中[\u4E00-\u9FA5]是漢字的正則匹配,包括基本漢字2萬多個(gè),其中\(zhòng)u4E00表示漢字“一”,具體請(qǐng)參見《漢字unicode編碼范圍》。

2.2 密碼強(qiáng)度正則

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

上述正則表達(dá)式只能對(duì)用戶密碼強(qiáng)度進(jìn)行基本的通過性判定,關(guān)于密碼強(qiáng)度驗(yàn)證更多的內(nèi)容可參見:基于規(guī)則評(píng)分的密碼強(qiáng)度檢測(cè)算法分析及實(shí)現(xiàn)。

2.3 數(shù)字相關(guān)正則

2.3.1 整數(shù)正則

//正整數(shù)正則
var posPattern = /^\d+$/;
//負(fù)整數(shù)正則
var negPattern = /^-\d+$/;
//整數(shù)正則
var intPattern = /^-?\d+$/;
//輸出 true
console.log("30:"+posPattern.test("30"));
//輸出 true
console.log("-30:"+negPattern.test("-30"));
//輸出 true
console.log("-30:"+intPattern.test("-30"));

2.3.2 浮點(diǎn)數(shù)正則

//正浮點(diǎn)數(shù)正則
var posPattern = /^\d*\.\d+$/;
//負(fù)浮點(diǎn)數(shù)正則
var negPattern = /^-\d*\.\d+$/;
//兩位小數(shù)正則
var twoPattern = /^-?\d*\.\d{2}$/; 
//輸出 true
console.log("30.2:"+posPattern.test("30.2"));
//輸出 true 
console.log("-30.2:"+negPattern.test("-30.2"));
//輸出 true 
console.log("-30.22:"+twoPattern.test("-30.22"));

2.3.3 整數(shù)浮點(diǎn)數(shù)正則

可以是整數(shù)也可以是浮點(diǎn)數(shù)

//正數(shù)正則
var posPattern = /^\d*\.?\d+$/;
//負(fù)數(shù)正則
var negPattern = /^-\d*\.?\d+$/;
//數(shù)字正則
var numPattern = /^-?\d*\.?\d+$/;
//輸出 true
console.log("30.2:"+posPattern.test("30.2"));
//輸出 true 
console.log("-30.2:"+negPattern.test("-30.2"));
//輸出 true 
console.log("-30.2:"+numPattern.test("-30.2"));

2.4 日期正則

2.4.1 出生日期正則

var pattern = /^((19[2-9]\d{1})|(20((0[0-9])|(1[0-8]))))\-((0?[1-9])|(1[0-2]))\-((0?[1-9])|([1-2][0-9])|30|31)$/;
//輸出 true
console.log(pattern.test("1923-3-18"));
//輸出 true
console.log(pattern.test("1923-4-31"));
//輸出 true
console.log(pattern.test("1923-2-29"));
//輸出 true
console.log(pattern.test("2016-2-29"));

上述正則驗(yàn)證還不完善,主要是2,4,6,9,11月份的天數(shù)問題。

2.4.2 通用日期正則

//日期正則,復(fù)雜判定
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"));

2.5 Email正則

2.5.1 基本Email正則

var pattern = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
//輸出 true
console.log(pattern.test('cn30ke@163.com'));
//輸出 true
console.log(pattern.test('ifat3@sina.com.cn'));
//輸出 true
console.log(pattern.test('ifat3.it@163.com'));
//輸出 true
console.log(pattern.test('ifat3_-.@30ke.cn'));
//輸出 false
console.log(pattern.test('ifat3@30ke.online'));
//輸出 false
console.log(pattern.test('毛瑞@30ke.cn'));

基本Email正則是最常用的驗(yàn)證方式,也適合大多數(shù)的應(yīng)用場(chǎng)景。從以上測(cè)試可以看出,該表達(dá)式不支持.online及.store結(jié)尾的域名。如需兼容這類域名(大于4位),調(diào)整正則結(jié)尾{2,4}的限制部分即可(例:{2,8})。另一個(gè)問題是Email用戶名不能包括中文。

2.5.2 中文名Email正則

根據(jù)前一正則中的問題,追加兩條規(guī)則如下:

用戶名可以包括中文 [\u4e00-\u9fa5]
域名結(jié)尾最長可為8位 {2,8}

var pattern = /^([A-Za-z0-9_\-\.\u4e00-\u9fa5])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,8})$/;
//輸出 true
console.log(pattern.test('cn30ke@163.com'));
//輸出 true
console.log(pattern.test('ifat3@sina.com.cn'));
//輸出 true
console.log(pattern.test('ifat3.it@163.com'));
//輸出 true
console.log(pattern.test('ifat3_-.@30ke.cn'));
//輸出 true
console.log(pattern.test('ifat3@30ke.online'));
//輸出 true
console.log(pattern.test('毛瑞@30ke.cn'));

2.5.3 特定域名Email正則

在手機(jī)驗(yàn)證碼出現(xiàn)之前,差不多郵箱驗(yàn)證是保證用戶唯一性的唯一條件。而臨時(shí)郵箱(也稱10分鐘郵箱或一次性郵箱)的出現(xiàn),則使得郵箱驗(yàn)證及帳戶激活這種機(jī)制失去了意義。而臨時(shí)郵箱的地址是不可枚舉的,我們只能才采取白名單的方式,只允許有限的郵箱域名通過驗(yàn)證。

var pattern = /^([A-Za-z0-9_\-\.])+\@(163.com|qq.com|30ke.cn)$/;
//輸出 true
console.log(pattern.test('cn30ke@163.com'));
//輸出 false
console.log(pattern.test('ifat3@sina.com.cn'));
//輸出 true
console.log(pattern.test('ifat3.it@163.com'));
//輸出 true
console.log(pattern.test('ifat3_-.@30ke.cn'));
//輸出 false
console.log(pattern.test('ifat3@30ke.online'));
//輸出 false
console.log(pattern.test('毛瑞@30ke.cn'));

此方法雖然能保證驗(yàn)證安全性,但是如果白名單太長會(huì)造成模式字符串太長。這時(shí)可以將郵箱域名白名單寫成數(shù)組,利用正則表達(dá)式做初步驗(yàn)證,用白名單做域名的二次驗(yàn)證。

常用域名白名單數(shù)組:

var domains= ["qq.com","163.com","vip.163.com","263.net","yeah.net","sohu.com","sina.cn","sina.com","eyou.com","gmail.com","hotmail.com"];

上述白名單只列舉了常用的11種郵箱域名,大家可以根據(jù)需要適當(dāng)補(bǔ)充或刪減。

2.6 手機(jī)號(hào)碼正則

//手機(jī)號(hào)正則
var mPattern = /^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(18[0,5-9]))\d{8}$/;
//輸出 true
console.log(mPattern.test("18600000000"));

2.7 身份證號(hào)正則

//身份證號(hào)(18位)正則
var cP = /^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/;
//輸出 true
console.log(cP.test("11010519880605371X"));

上述正則只能對(duì)身份證號(hào)進(jìn)行基本的通過性判定,關(guān)于公民身份號(hào)碼判定的更多內(nèi)容可參見文檔:公民身份號(hào)碼正確性判定及程序?qū)崿F(xiàn)

2.8 URL正則

//URL正則
var urlP= /^((https?|ftp|file):\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/;
//輸出 true
console.log(urlP.test(http://30ke.cn));

2.9 IP地址

2.9.1 IPv4地址正則

//ipv4地址正則
var ipP = /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;
//輸出 true
console.log(ipP.test("115.28.47.26"));

2.9.2 IPv6地址正則

//IPV6正則
var pattern = /(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))/;
//輸出 true
console.log(pattern.test("fe80:0000:0000:0000:0204:61ff:fe9d:f156"));

2.10 十六進(jìn)制顏色正則

//RGB Hex顏色正則
var cPattern = /^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/;
//輸出 true
console.log(cPattern.test("#b8b8b8"));

2.11 QQ號(hào)碼正則

//QQ號(hào)正則,5至11位
var qqPattern = /^[1-9][0-9]{4,10}$/;
//輸出 true
console.log(qqPattern.test("65974040"));

2.12 微信號(hào)正則

//微信號(hào)正則,6至20位,以字母開頭,字母,數(shù)字,減號(hào),下劃線
var wxPattern = /^[a-zA-Z]([-_a-zA-Z0-9]{5,19})+$/;
//輸出 true
console.log(wxPattern.test("RuilongMao"));

2.13 車牌號(hào)正則

//車牌號(hào)正則
var cPattern = /^[京津滬渝冀豫云遼黑湘皖魯新蘇浙贛鄂桂甘晉蒙陜吉閩貴粵青藏川寧瓊使領(lǐng)A-Z]{1}[A-Z]{1}[A-Z0-9]{4}[A-Z0-9掛學(xué)警港澳]{1}$/;
//輸出 true
console.log(cPattern.test("京K39006"));

2.14 包含中文正則

//包含中文正則
var cnPattern = /[\u4E00-\u9FA5]/;
//輸出 true
console.log(cnPattern.test("30課"));

總結(jié)

以上所述是小編給大家介紹的常用JavaScript正則表達(dá)式匯編與示例詳解,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!

相關(guān)文章

  • 深入淺出正則表達(dá)式中的邊界\b和\B

    深入淺出正則表達(dá)式中的邊界\b和\B

    對(duì)于正則表達(dá)式的中\(zhòng)B和\b 有些地方會(huì)出現(xiàn)弄不懂的情況,所以查找資料學(xué)習(xí)了一番,下面這篇文章主要給大家介紹了關(guān)于正則表達(dá)式中邊界\b和\B的相關(guān)資料,需要的朋友可以參考下
    2021-10-10
  • javascript正則表達(dá)式分析

    javascript正則表達(dá)式分析

    想必很多人都對(duì)正則表達(dá)式都頭疼。今天,我以我的認(rèn)識(shí),加上網(wǎng)上一些文章,希望用常人都可以理解的表達(dá)方式來和大家分享學(xué)習(xí)經(jīng)驗(yàn)。
    2008-05-05
  • 只能輸入正整數(shù)的正則表達(dá)式及常用的正則表達(dá)式

    只能輸入正整數(shù)的正則表達(dá)式及常用的正則表達(dá)式

    這篇文章主要介紹了只能輸入正整數(shù)的正則表達(dá)式以及常用的正則表達(dá)式,需要的朋友可以參考下
    2018-09-09
  • 正則表達(dá)式中.+?與.*?的區(qū)別

    正則表達(dá)式中.+?與.*?的區(qū)別

    本文主要介紹了正則表達(dá)式中.+?與.*?的區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • 正則替換換行符和把 br 替換成換行符

    正則替換換行符和把 br 替換成換行符

    今天在修過模版的時(shí)候,需要用到將br替換為換行符,一般\r\n就可以了,如果少些一個(gè)兼容性就出現(xiàn)問題了
    2014-06-06
  • 關(guān)于HTML及UBB標(biāo)記的閉合

    關(guān)于HTML及UBB標(biāo)記的閉合

    關(guān)于HTML及UBB標(biāo)記的閉合...
    2006-12-12
  • JavaScript 正則表達(dá)式(筆記)

    JavaScript 正則表達(dá)式(筆記)

    這篇文章主要介紹了JavaScript 正則表達(dá)式(筆記) ,這里總結(jié)了js中的一些正則的使用方法,需要的朋友可以參考下
    2015-04-04
  • 正則表達(dá)式在IOS中的應(yīng)用及IOS中三種正則表達(dá)式的使用與比較

    正則表達(dá)式在IOS中的應(yīng)用及IOS中三種正則表達(dá)式的使用與比較

    本篇文章給大家介紹正則表達(dá)式在IOS中應(yīng)用以及IOS中三種正則表達(dá)式式的使用與比較,感興趣的朋友跟著小編一起來學(xué)習(xí)學(xué)習(xí)吧
    2015-09-09
  • 正則表達(dá)式模式修飾符

    正則表達(dá)式模式修飾符

    下面列出了當(dāng)前可用的正則表達(dá)式修飾符。括號(hào)中提到的名字是正則表達(dá)式內(nèi)部這些修飾符的名稱。 模式修飾符中的空格,換行符會(huì)被忽略,其他字符會(huì)導(dǎo)致錯(cuò)誤
    2016-12-12
  • 編寫高質(zhì)量的js之正確理解正則表達(dá)式回溯

    編寫高質(zhì)量的js之正確理解正則表達(dá)式回溯

    在正則表達(dá)式實(shí)現(xiàn)中,回溯是匹配過程的基本組成部分,它是正則表達(dá)式如此好用和強(qiáng)大的根源。然而,回溯計(jì)算代價(jià)很高,如果設(shè)計(jì)失誤,將導(dǎo)致失控?;厮菔怯绊懻w性能的唯一因素,理解它的工作原理,以及如何減小使用頻率,可能是編寫高效正則表達(dá)式的關(guān)鍵點(diǎn)
    2016-12-12

最新評(píng)論

精河县| 理塘县| 拜城县| 宁南县| 辽中县| 和田县| 蒲江县| 洞口县| 德兴市| 定远县| 方正县| 莎车县| 宁国市| 新龙县| 闻喜县| 巴青县| 龙泉市| 普陀区| 集贤县| 龙里县| 莆田市| 廉江市| 克什克腾旗| 祥云县| 苍溪县| 舒兰市| 广州市| 凤山市| 赤水市| 肥乡县| 樟树市| 灵璧县| 潢川县| 巴中市| 天气| 巩义市| 大姚县| 庄浪县| 如皋市| 景宁| 连山|