摘要:簡(jiǎn)言在中,經(jīng)常會(huì)用到正則表達(dá)式來進(jìn)行模式匹配。要寫出正確的正則表達(dá)式,先要定義表達(dá)式規(guī)則。重復(fù)在正則表達(dá)式中用來表示元素重復(fù)出現(xiàn)的次數(shù)。給出測(cè)試結(jié)果如下毛三胖子測(cè)試代碼根據(jù)以上內(nèi)容,定義你自己的登錄名正則表達(dá)式吧原文鏈接
簡(jiǎn)言
在JavaScript中,經(jīng)常會(huì)用到正則表達(dá)式來進(jìn)行模式匹配。例如,登錄名驗(yàn)證,密碼強(qiáng)度驗(yàn)證,字符串查找或替換等操作。現(xiàn)在就開始吧,零基礎(chǔ)寫出你的第一個(gè)正則表達(dá)式!
在做用戶注冊(cè)時(shí),都會(huì)用到登錄名正則校驗(yàn)。要寫出正確的正則表達(dá)式,先要定義表達(dá)式規(guī)則。假設(shè)登錄名做如下規(guī)則定義:
最短4位,最長(zhǎng)16位 {4,16}
可以包含小寫大母 [a-z] 和大寫字母 [A-Z]
可以包含數(shù)字 [0-9]
可以包含下劃線 [ _ ] 和減號(hào) [ - ]
根據(jù)以上規(guī)則,很容易給出正則表達(dá)式的字面量如下:
var pattern = /^[a-zA-Z0-9_-]{4,16}$/測(cè)試
測(cè)試結(jié)果如下:
var pattern = /^[a-zA-Z0-9_-]{4,16}$/;
pattern.test("ifat3") = true
pattern.test("42du") = true
pattern.test("42du-_") = true
pattern.test("_42du") = true
pattern.test("42d") = false
pattern.test("42du42du42du42du1") = false
pattern.test("42du@") = false
測(cè)試代碼
解析 字面量 / /正則表達(dá)式的字面量定義為包含在一對(duì)斜杠(/)之間的字符,例如:
var pattern = /s$/;
上述字面量匹配所有以字母“s”結(jié)尾的字符串。
字符類 [ ]將字符放進(jìn)方括號(hào)內(nèi)就組成了字符類。一個(gè)字符類可以匹配它所包含的任意字符。因此,正則表達(dá)式/[abc]/就和字母“a”,“b”,“c”中的任意一個(gè)都匹配。
字符類可以使用連字符來表示字符范圍。要匹配拉丁小寫字母可以使用/[a-z]/。
[a-zA-Z0-9_-]表示匹配任意的拉丁大小寫字母,數(shù)字再加上下劃線和減號(hào)。
重復(fù) {}在正則表達(dá)式中用{ }來表示元素重復(fù)出現(xiàn)的次數(shù)。
{n,m} 匹配前一項(xiàng)至少n次,但不能超過m次
{n,} 匹配前一項(xiàng)n次或更多次
{n} 匹配前一項(xiàng)n次
[a-zA-Z0-9_-]{4,16} 表示匹配任意的拉丁大小寫字母,數(shù)字再加上下劃線和減號(hào)出現(xiàn)最少4次,最多16次。
匹配位置^ 匹配字符串的開頭,在多行檢索中,匹配一行的開頭
$ 匹配字符串的結(jié)尾,在多行檢索中,匹配一行的結(jié)尾
延伸1根據(jù)以上說明,你一定理解了上述正則表達(dá)式所表達(dá)的含義,是不是很簡(jiǎn)單!
假設(shè)你對(duì)上述規(guī)則不滿意,想增加一條規(guī)則,如下:
首字母只能是大小寫字母
很容易變更上述正則表達(dá)式如下:
var pattern = /^[a-zA-Z][a-zA-Z0-9_-]{3,15}$/;
給出測(cè)試結(jié)果如下:
var pattern = /^a-zA-Z{3,15}$/;
pattern.test("ifat3") = true
pattern.test("Ifat3") = true
pattern.test("du42") = true
pattern.test("42du") = false
pattern.test("d42") = false
pattern.test("du42du42du42du421") = false
pattern.test("du42@") = false
測(cè)試代碼
延伸2如果允許中文的登錄名,變更規(guī)則,如下:
首字母只能是大小寫字母或中文基本漢字
其它位也可以包含中文基本漢字
給出如下正則表達(dá)式:
var pattern = /^[a-zA-Zu4E00-u9FA5][a-zA-Z0-9u4E00-u9FA5_-]{3,15}$/;
其中[u4E00-u9FA5]是漢字的正則匹配,包括基本漢字2萬多個(gè),其中u4E00表示漢字“一”,具體請(qǐng)參見“漢字unicode編碼范圍”。
給出測(cè)試結(jié)果如下:
var pattern = /^a-zA-Zu4E00-u9FA5{3,15}$/;
pattern.test("ifat3") = true
pattern.test("Ifat3") = true
pattern.test("毛三胖子") = true
pattern.test("42du") = false
pattern.test("d42") = false
pattern.test("du42du42du42du421") = false
pattern.test("du42@") = false
測(cè)試代碼
根據(jù)以上內(nèi)容,定義你自己的登錄名正則表達(dá)式吧!
原文鏈接
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/93274.html
摘要:指令在上使用元素沒有設(shè)置屬性時(shí),自動(dòng)設(shè)置綁定的狀態(tài)屬性名為屬性。 一個(gè)模塊的template模板、JavaScript和css之間的關(guān)系其實(shí)可以如下圖表示:showImg(https://segmentfault.com/img/bV2ht2?w=413&h=337); 如果你了解Angular、Vue動(dòng)態(tài)模板,那你將會(huì)對(duì)Amaple的模板感到很熟悉,在Amaple中,template...
摘要:指令在上使用元素沒有設(shè)置屬性時(shí),自動(dòng)設(shè)置綁定的狀態(tài)屬性名為屬性。 一個(gè)模塊的template模板、JavaScript和css之間的關(guān)系其實(shí)可以如下圖表示:showImg(https://segmentfault.com/img/bV2ht2?w=413&h=337); 如果你了解Angular、Vue動(dòng)態(tài)模板,那你將會(huì)對(duì)Amaple的模板感到很熟悉,在Amaple中,template...
摘要:指令在上使用元素沒有設(shè)置屬性時(shí),自動(dòng)設(shè)置綁定的狀態(tài)屬性名為屬性。 一個(gè)模塊的template模板、JavaScript和css之間的關(guān)系其實(shí)可以如下圖表示:showImg(https://segmentfault.com/img/bV2ht2?w=413&h=337); 如果你了解Angular、Vue動(dòng)態(tài)模板,那你將會(huì)對(duì)Amaple的模板感到很熟悉,在Amaple中,template...
摘要:在這之前,還是有必要對(duì)一些概念超輕量級(jí)反爬蟲方案后端掘金前言爬蟲和反爬蟲日益成為每家公司的標(biāo)配系統(tǒng)。 爬蟲修煉之道——從網(wǎng)頁(yè)中提取結(jié)構(gòu)化數(shù)據(jù)并保存(以爬取糗百文本板塊所有糗事為例) - 后端 - 掘金歡迎大家關(guān)注我的專題:爬蟲修煉之道 上篇 爬蟲修煉之道——編寫一個(gè)爬取多頁(yè)面的網(wǎng)絡(luò)爬蟲主要講解了如何使用python編寫一個(gè)可以下載多頁(yè)面的爬蟲,如何將相對(duì)URL轉(zhuǎn)為絕對(duì)URL,如何限速,...
閱讀 2152·2023-05-11 16:55
閱讀 3516·2021-08-10 09:43
閱讀 2631·2019-08-30 15:44
閱讀 2452·2019-08-29 16:39
閱讀 593·2019-08-29 13:46
閱讀 2015·2019-08-29 13:29
閱讀 931·2019-08-29 13:05
閱讀 702·2019-08-26 13:51