摘要:前言在我們做用戶授權(quán)登錄微信授權(quán),以及根據(jù)對(duì)應(yīng)瀏覽器做對(duì)應(yīng)的操作的時(shí)候,經(jīng)常會(huì)遇到需要判斷用戶使用的瀏覽器的需求,以及在需要用戶輸入信息的時(shí)候,有需要驗(yàn)證的一些正則。
前言
在我們做用戶授權(quán)登錄(微信,qq授權(quán)),以及根據(jù)對(duì)應(yīng)瀏覽器做對(duì)應(yīng)的操作的時(shí)候,經(jīng)常會(huì)遇到需要判斷用戶使用的瀏覽器的需求,以及在需要用戶輸入信息的時(shí)候,有需要驗(yàn)證的一些正則。如果喜歡的話可以點(diǎn)波贊/關(guān)注,支持一下,希望大家看完本文可以有所收獲。
個(gè)人博客了解一下:obkoro1.com判斷用戶瀏覽器 navigator.userAgent
判斷用戶所使用的瀏覽器主要用到的api是navigator.userAgent,這是一個(gè)只讀的字符串,聲明了瀏覽器用于 HTTP 請(qǐng)求的用戶代理頭的值,不同瀏覽器的userAgent值都不相同,所以我們可以根據(jù)這個(gè)字符串來(lái)判斷用戶是從哪個(gè)瀏覽器進(jìn)入的。
判斷方式:下面兩個(gè)是剛做的demo獲取的值,仔細(xì)觀察下面兩個(gè)字符串,會(huì)發(fā)現(xiàn)有些值是不一樣的,并且瀏覽器特有的,依據(jù)這個(gè)我們就可以作為不同瀏覽器的判斷條件。
QQ內(nèi)置瀏覽器的userAgent值:mozilla/5.0 (iphone; cpu iphone os 11_1_2 like mac os x) applewebkit/604.3.5 (khtml, like gecko) mobile/15b202 qq/7.5.8.422 v1_iph_sq_7.5.8_1_app_a pixel/1080 core/uiwebview device/apple(iphone 8plus) nettype/wifi qbwebviewtype/1
微信內(nèi)置瀏覽器的userAgent值:mozilla/5.0 (iphone; cpu iphone os 11_1_2 like mac os x) applewebkit/604.3.5 (khtml, like gecko) mobile/15b202 micromessenger/6.6.6 nettype/wifi language/zh_cn
示例使用方式,直接使用這個(gè)api讀取值,然后根據(jù)事先觀察userAgent字符串的不同之處來(lái)判斷:
let url = navigator.userAgent.toLowerCase(); //使用toLowerCase將字符串全部轉(zhuǎn)為小寫 方便我們判斷使用 if (url.indexOf("15b202 qq") > -1) { //多帶帶判斷QQ內(nèi)置瀏覽器 alert("QQ APP 內(nèi)置瀏覽器,做你想做的操作"); } if (url.indexOf("micromessenger") > -1) { //多帶帶判斷微信內(nèi)置瀏覽器 alert("微信內(nèi)置瀏覽器,做你想做的操作"); } if (url.indexOf("15b202") > -1) { //判斷微信內(nèi)置瀏覽器,QQ內(nèi)置瀏覽器 alert("QQ和微信內(nèi)置瀏覽器,做你想做的操作"); }
上面判斷了微信和QQ的內(nèi)置瀏覽器,如果有更多不同的需求的話,可以按照上面的方式,先獲取userAgent的字符串,然后再根據(jù)觀察,使用indexOf判斷是否含有指定的字符,來(lái)對(duì)不同瀏覽器進(jìn)行不同的操作。
一部分正則判斷用戶輸入信息為了避免用戶胡亂輸入就通過(guò)驗(yàn)證,很多時(shí)候我們都會(huì)采用正則表達(dá)式來(lái)驗(yàn)證一下用戶輸入的信息是否符合規(guī)范。這部分的內(nèi)容基本上是在網(wǎng)上收集來(lái)的,這里跟大家一起分享一下,有需要的可以記在自己的有道云里面。
如何驗(yàn)證?驗(yàn)證的方式當(dāng)然是很多了,這里推薦采用test()方法來(lái)驗(yàn)證。
let isTrue=RegExpObject.test(string);// RegExpObject為正則 string是要檢測(cè)的字符串 // 如果字符串 string 中含有與 RegExpObject 匹配的文本,則返回 true,否則返回 false。 if (isTrue){ //驗(yàn)證成功 do something }elseP{ //驗(yàn)證失敗 }身份證號(hào)碼正則表達(dá)式:
第一代身份證只有15位數(shù),第二代身份證有18位數(shù),各位按照需求來(lái)選擇表達(dá)式。
//第二代身份證號(hào)碼正則 let isTrue = /^[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]$/; //第一代身份證正則表達(dá)式(15位) let isTrue=/^[1-9]d{7}((0d)|(1[0-2]))(([0|1|2]d)|3[0-1])d{3}$/;手機(jī)號(hào)碼正則表達(dá)式:
時(shí)間截止為:2018年1月11日
移動(dòng)號(hào)段:134 135 136 137 138 139 147 148 150 151 152 157 158 159 172 178 182 183 184 187 188 198
聯(lián)通號(hào)段:130 131 132 145 146 155 156 166 171 175 176 185 186
電信號(hào)段:133 149 153 173 174 177 180 181 189 199
虛擬運(yùn)營(yíng)商:170
let isTrue = /^(13[0-9]|14[5-9]|15[012356789]|166|17[0-8]|18[0-9]|19[8-9])[0-9]{8}$/;郵箱正則表達(dá)式:
let isTrue =/^([A-Za-z0-9_-.u4e00-u9fa5])+@([A-Za-z0-9_-.])+.([A-Za-z]{2,8})$/;用戶名正則:
////用戶名正則,4到16位(字母,數(shù)字,下劃線,減號(hào)) let isTrue = /^[a-zA-Z0-9_-]{4,16}$/;密碼正則:
密碼正則,以字母開(kāi)頭,長(zhǎng)度在6~18之間,只能包含字母、數(shù)字和下劃線
let isTrue =^[a-zA-Z]w{5,17}$;
強(qiáng)密碼正則,最少6位,包括至少1個(gè)大寫字母,1個(gè)小寫字母,1個(gè)數(shù)字,1個(gè)特殊字符
let isTrue = /^.*(?=.{6,})(?=.*d)(?=.*[A-Z])(?=.*[a-z])(?=.*[!@#$%^&*? ]).*$/;QQ號(hào)碼正則:
let isTrue = /^[1-9][0-9]{4,10}$/;微信號(hào)碼正則:
//微信號(hào)正則,6至20位,以字母開(kāi)頭,字母,數(shù)字,減號(hào),下劃線 let isTrue = /^[a-zA-Z]([-_a-zA-Z0-9]{5,19})+$/;特殊字符檢測(cè)正則:
let isTrue= /[""<>%;)(&+]+-!!@#$~/;域名正則:
let isTrue=[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?;車牌號(hào)碼正則:
let isTrue = /^[京津滬渝冀豫云遼黑湘皖魯新蘇浙贛鄂桂甘晉蒙陜吉閩貴粵青藏川寧瓊使領(lǐng)A-Z]{1}[A-Z]{1}[A-Z0-9]{4}[A-Z0-9掛學(xué)警港澳]{1}$/;包含中文正則:
let isTrue = /[u4E00-u9FA5]/; //這個(gè)可以用于驗(yàn)證用戶的真實(shí)姓名。護(hù)照正則:
let isTrue=/^(Pd{7}|Gd{7,8}|THd{7,8}|Sd{7,8}|Ad{7,8}|Ld{7,8}|d{9}|Dd+|1[4,5]d{7})$/;固定電話正則:
let isTrue=((d{3,4})|d{3,4}-|s)?d{8};IP地址正則:
let isTrue=d+.d+.d+.d+;郵政編碼正則:
let isTrue=[1-9]{1}(d+){5};經(jīng)緯度正則
//經(jīng)度正則 let isTrue=/^(-|+)?(((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)$/; //緯度正則 let isTrue=/^(-|+)?([0-8]?d{1}.d{0,6}|90.0{0,6}|[0-8]?d{1}|90)$/;
常用的正則表達(dá)式大概就是上面這些了,如果大家還有其他干貨的話,歡迎在評(píng)論區(qū)留言分享一下。
結(jié)語(yǔ)以上就是本文的內(nèi)容了,希望大家看完可以有所收獲,喜歡的話,趕緊點(diǎn)波訂閱關(guān)注/喜歡,以后方便查找復(fù)制粘貼,233。
最后:如需轉(zhuǎn)載,請(qǐng)放上原文鏈接并署名。碼字不易,感謝支持!本人寫文章本著交流記錄的心態(tài),寫的不好之處,不撕逼,但是歡迎指點(diǎn)。
個(gè)人blog and 掘金個(gè)人主頁(yè)
如果喜歡本文的話,可以關(guān)注一下我剛開(kāi)的訂閱號(hào),共同學(xué)習(xí)成長(zhǎng)。
以上2018.5.5
參考資料:HTML DOM userAgent 屬性
JavaScript test() 方法
2018最新手機(jī)號(hào)碼正則表達(dá)式
身份證號(hào)碼的正則表達(dá)式
JavaScript手機(jī)號(hào)碼格式驗(yàn)證方法
郵箱/郵件地址的正則表達(dá)式及分析
前端表單驗(yàn)證常用的15個(gè)JS正則表達(dá)式
前端開(kāi)發(fā)中的 正則表達(dá)式 及常用正則表達(dá)式大全
密碼強(qiáng)度的正則表達(dá)式
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/94780.html
摘要:最全正則表達(dá)式總結(jié)驗(yàn)證號(hào)手機(jī)號(hào)中文郵編身份證地址等是正則表達(dá)式的縮寫,作用是對(duì)字符串執(zhí)行模式匹配。學(xué)習(xí)目標(biāo)了解正則表達(dá)式語(yǔ)法在中使用正則表達(dá)式在中使 JS高級(jí)技巧 本篇是看的《JS高級(jí)程序設(shè)計(jì)》第23章《高級(jí)技巧》做的讀書分享。本篇按照書里的思路根據(jù)自己的理解和經(jīng)驗(yàn),進(jìn)行擴(kuò)展延伸,同時(shí)指出書里的一些問(wèn)題。將會(huì)討論安全的類型檢測(cè)、惰性載入函數(shù)、凍結(jié)對(duì)象、定時(shí)器等話題。1. 安全的類型檢測(cè)...
摘要:對(duì)前端來(lái)說(shuō),使用的場(chǎng)景不多,但是像微信端的對(duì)話系統(tǒng)的表情包,就使用到了一個(gè)特定的規(guī)則。我是一個(gè)前端,工作年了,現(xiàn)在失業(yè),想進(jìn)入騰訊工作,這是我的聯(lián)系方式這個(gè)正則雖 我發(fā)現(xiàn)有個(gè)別字符被這個(gè)編輯器給刷掉了,但是灰色區(qū)域顯示正常,以灰色區(qū)域代碼為準(zhǔn) 什么玩意? 在我剛開(kāi)始學(xué)習(xí)編程的時(shí)候,就聽(tīng)過(guò)正則了,也聽(tīng)說(shuō)正則很牛逼,懂正則的更牛逼。但是苦于沒(méi)有人指點(diǎn),也沒(méi)有使用正則的場(chǎng)景,自己看教程又懵逼...
摘要:好多編輯器例如等都支持這樣的語(yǔ)法來(lái)快速的編寫代碼如何優(yōu)雅地使用把標(biāo)簽放在結(jié)束標(biāo)簽之后結(jié)束標(biāo)簽之前的差別什么是響應(yīng)式設(shè)計(jì)怎樣進(jìn)行 書籍 《JavaScriptDOM編程藝術(shù)》《JavaScript高級(jí)程序設(shè)計(jì)》《JavaScript框架設(shè)計(jì)》《JavaScript專家編程》《JavaScript Ninjia》《JavaScript語(yǔ)言精粹(修訂版)》《JavaScript設(shè)計(jì)模式》《J...
摘要:好多編輯器例如等都支持這樣的語(yǔ)法來(lái)快速的編寫代碼如何優(yōu)雅地使用把標(biāo)簽放在結(jié)束標(biāo)簽之后結(jié)束標(biāo)簽之前的差別什么是響應(yīng)式設(shè)計(jì)怎樣進(jìn)行 書籍 《JavaScriptDOM編程藝術(shù)》《JavaScript高級(jí)程序設(shè)計(jì)》《JavaScript框架設(shè)計(jì)》《JavaScript專家編程》《JavaScript Ninjia》《JavaScript語(yǔ)言精粹(修訂版)》《JavaScript設(shè)計(jì)模式》《J...
閱讀 807·2021-11-24 09:38
閱讀 1009·2021-11-11 11:01
閱讀 3255·2021-10-19 13:22
閱讀 1541·2021-09-22 15:23
閱讀 2843·2021-09-08 09:35
閱讀 2779·2019-08-29 11:31
閱讀 2133·2019-08-26 11:47
閱讀 1577·2019-08-26 11:44