国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

正則系列——JavaScript正則表達(dá)式基礎(chǔ)語(yǔ)法鞏固篇

phodal / 2344人閱讀

摘要:基礎(chǔ)語(yǔ)法鞏固正則表達(dá)式引擎根據(jù)正則去匹配字符的時(shí)候,是通過(guò)檢查索引的方式。妻原配就是好,可以直接使用正則表達(dá)式調(diào)用它。下面解釋一下上面這些常用的元字符查找單個(gè)字符,除了換行和行結(jié)束符。正則系列文章整理到了

上一章內(nèi)容:正則表達(dá)式實(shí)戰(zhàn)篇

知識(shí)回顧

前2章分別學(xué)習(xí)了正則表達(dá)式入門技巧,以及遇到正則需求該如何去分析問(wèn)題,還有正則表達(dá)式實(shí)戰(zhàn)的一些場(chǎng)景解釋。

這一章內(nèi)容偏向理論,推薦你點(diǎn)擊開(kāi)頭的鏈接前往前2章節(jié)學(xué)習(xí)一下入門技巧,然后再看這一章內(nèi)容,就不會(huì)那么迷茫了。我一向相信工程師要先學(xué)會(huì)做事,才能學(xué)懂理論,先學(xué)理論,再學(xué)做事的通常是紙上談兵,一遇到實(shí)戰(zhàn)就懵逼。

基礎(chǔ)語(yǔ)法鞏固

正則表達(dá)式引擎根據(jù)正則去匹配字符的時(shí)候,是通過(guò)檢查索引的方式。

RegExp構(gòu)造函數(shù)

JavaScript正則表達(dá)式有2種寫法:比較常用的是第二種,第一種寫法在一些replace替換時(shí)涉及到變量的時(shí)候,可能會(huì)用到,后面例子如果有這個(gè)需求,再說(shuō)。

1、RegExp
下面其實(shí)是同一種寫法,一個(gè)用 "正則",一個(gè)是用 /正則/,注意使用字符串寫法的時(shí)候,特殊字符要進(jìn)行轉(zhuǎn)義。

var r = new RegExp("d+", "g") //r.test("123") true
//或者是
var r = new RegExp(/d+/, "g")  //r.test("123") true

如果你沒(méi)有轉(zhuǎn)義特殊字符,那么正則就是錯(cuò)的,比如:

//我錯(cuò)了
var r = new RegExp("d+", "g") //r.test("123") false

2、/正則/
你還可以直接使用 /正則/ 的寫法。

/d+/g.test("123") // true

和RegExp有關(guān)的幾個(gè)方法,compile()、exec()、test(),與之相對(duì)于的是search()、match()、replace()、split(),為了好記,我把她們叫做 “3妻4妾”。

3妻是RegExp的原配方法,4妾是字符串方法。

1、3妻
原配就是好,可以直接使用正則表達(dá)式調(diào)用它。

var r = /2/
r.compile(r) //重新編譯正則,這個(gè)不太常用
r.exec("123") //獲取正則匹配的字符所在的位置
r.test("123") //最受歡迎的妻子,判斷字符串是否符合某個(gè)正則,true 或者 false

2、4妾
4妾不是RegExp的方法,而是字符串的方法。在控制臺(tái)輸入 "".__proto__ ,就能看到字符串原型中的這4個(gè)方法,又因?yàn)樗齻兌己驼齽t有關(guān),所以叫做RegExp的4個(gè)小妾。

var r = /2/
"123".search(r) //返回匹配字符的位置,范圍是0-n,如果不存在,則返回-1。
"123".match(r) //返回?cái)?shù)組,這個(gè)方法常用在提取字符串中的某些字符。
"123".replace(r, "4") //最基本的用法是替換正則匹配到的字符串,還有一種高級(jí)用法,后面再講。
"123".split(r) //表示切割字符串,這里把2切割出來(lái),"123"變成了["1", "3"].
//通常我們用它來(lái)切割字符串里面的空格或者回車符,然后再map渲染。
"1 2
3".split(/[s
]/g).map(v => v) //["1", "2", "3"].map()
修飾符

JavaScript中常用的修飾符有3種,i、g、m,g你可能經(jīng)常看得到。

"Aasb".match(/a/i) //i表示忽略大小寫,匹配出來(lái)的是第一個(gè)A
"Aasb".match(/a/ig) //想要匹配所有的a,就需要加上g全局搜索 ["A", "a"]
m: 多行匹配,具體用法不了解
元字符

“元”的含義是元始天尊,“元字符”是元始天尊制造的一個(gè)個(gè)基礎(chǔ)符文,用這些基礎(chǔ)符文可以組合出各種高級(jí)的正則表達(dá)式。

.:查找單個(gè)字符,除了換行和行結(jié)束符。
w:查找字母和數(shù)字。
d:查找數(shù)字。
D:查找非數(shù)字字符。
s:查找空白字符。
S:查找非空白字符。
:匹配單詞邊界。
B:匹配非單詞邊界。

:查找換行符。
f:查找換頁(yè)符。

:查找回車符。
	:查找制表符。
v:查找垂直制表符。

下面解釋一下上面這些常用的元字符

查找單個(gè)字符,除了換行和行結(jié)束符。
換行符你可能知道,但是結(jié)束符是什么?在一個(gè)字符串最后,你肉眼看不到的地方,有一個(gè)結(jié)束符號(hào),在101網(wǎng)站使用 /.*/ 測(cè)試一下就能看到了

"第一段
第二段".match(/./g) //["第", "一", "段", "第", "二", "段"]

//使用.+之后,匹配出來(lái)的效果就和split切割一樣了。
"第一段
第二段".match(/.+/g) //["第一段", "第二段"]

查找字母和數(shù)字

"aA1".match(/w/g) // ["a", "A", "1"]
"aA1".match(/w+/g) // ["aA1"]

其他字符自己去101網(wǎng)站測(cè)試玩一下,很有趣的。

括號(hào)內(nèi)的正則

我們經(jīng)常看得到 []、()、{}這幾種括號(hào)穿插在正則表達(dá)式中,讓人眼花繚亂。但它的本質(zhì)非常簡(jiǎn)單,很好理解。你需要注意 [^abc]中的 ^ 和寫在/^abc$/的作用是不同的。

[abc]:查找方括號(hào)之間的任何字符。
[^abc]:查找任何不在方括號(hào)之間的字符。
[0-9]:查找任何從 0 至 9 的數(shù)字。
([0-9]|d):查找任何指定的選項(xiàng)。
[0-9]{1}:查找一次數(shù)字。

看幾個(gè)實(shí)例

實(shí)例1:

實(shí)例2:

實(shí)例3:

實(shí)例4:

量詞

量詞的意思是次數(shù),前面我們已經(jīng)使用到了一些量詞符號(hào),比如 +、 ?、 *、 {n, m}、 ^x$、最后還有零寬斷言 ?=n、?!n

n+:匹配任何包含至少一個(gè) n 的字符串。
n*:匹配任何包含零個(gè)或多個(gè) n 的字符串。
n?:匹配任何包含零個(gè)或一個(gè) n 的字符串。
n{X}:匹配包含 X 個(gè) n 的序列的字符串。
n{X,}:X 是一個(gè)正整數(shù)。前面的模式 n 連續(xù)出現(xiàn)至少 X 次時(shí)匹配。
n{X,Y}:X 和 Y 為正整數(shù)。前面的模式 n 連續(xù)出現(xiàn)至少 X 次,至多 Y 次時(shí)匹配。
n{X,}:匹配包含至少 X 個(gè) n 的序列的字符串。
n$:匹配任何結(jié)尾為 n 的字符串。
^n:匹配任何開(kāi)頭為 n 的字符串。
?=n:匹配任何其后緊接指定字符串 n 的字符串。
?!n:匹配任何其后沒(méi)有緊接指定字符串 n 的字符串。

這一段內(nèi)容沒(méi)法用文字描述清楚,請(qǐng)自行在 https://regex101.com 測(cè)試吧,只有實(shí)踐才能理解理論。當(dāng)你練習(xí)的次數(shù)足夠多了,之后,你會(huì)發(fā)現(xiàn)這些量詞都不用刻意記住,憑著感覺(jué)就能隨手寫出來(lái)了。

總結(jié)

正則表達(dá)式理論知識(shí)點(diǎn)很多,這一章內(nèi)容閱讀起來(lái)像讀天書,最重要的還是找到感覺(jué),就像你第一次學(xué)習(xí)react、vue、angular的時(shí)候,完全找不到方向,慢慢的,寫多了,突然有感覺(jué)了。正則還好,沒(méi)有太多復(fù)雜的概念,就是符號(hào)多了點(diǎn),常用的記住就行了。復(fù)雜的符號(hào)還是網(wǎng)上搜索吧,比如中文字符的正則,我真的記不住。。。

正則系列文章整理到了github:https://github.com/hyy1115/Re...

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/91877.html

相關(guān)文章

  • 正則系列——正則虐我千百遍,我要反抗了

    摘要:正則正則匹配的是零寬斷言這一塊我還沒(méi)有完成掌握,它的大概意思是,獲取某個(gè)字符或者某些字符前面的正則或者后面的正則。下一章正則表達(dá)式理論鞏固篇正則系列文章整理到了 如果你正則基礎(chǔ)為0,請(qǐng)先看第一篇文章:JavaScript正則表達(dá)式入門心得 實(shí)戰(zhàn)篇 上一章我分享了正則入門的一些體會(huì)以及注意事項(xiàng)。這一章開(kāi)始挑一些常用的比較復(fù)雜一點(diǎn)的需求來(lái)練習(xí)一下。 場(chǎng)景1:驗(yàn)證email是否合法 郵箱種類...

    lk20150415 評(píng)論0 收藏0
  • 基礎(chǔ)鞏固JavaScript基礎(chǔ)總結(jié)(基本概念)

    摘要:基礎(chǔ)鞏固基礎(chǔ)總結(jié)使用已經(jīng)好幾年了,由于工作主要是做服務(wù)端開(kāi)發(fā),在工作中逐漸發(fā)現(xiàn)的使用范圍原來(lái)越廣泛。這里要注意,務(wù)必將基礎(chǔ)部分掌握牢靠,磨刀不誤砍柴功,只有將基礎(chǔ)部分掌握并建立起系統(tǒng)的知識(shí)體系,在后面學(xué)習(xí)衍生的其他模式才能游刃有余。 基礎(chǔ)鞏固:JavaScript基礎(chǔ)總結(jié) 使用JavaScript已經(jīng)好幾年了,由于工作主要是做服務(wù)端開(kāi)發(fā),在工作中逐漸發(fā)現(xiàn)JavaScript的使用范圍原...

    YuboonaZhang 評(píng)論0 收藏0
  • 2017-09-17 前端日?qǐng)?bào)

    摘要:前端日?qǐng)?bào)精選面向初學(xué)者的高階組件教程騰訊大會(huì)圖文筆記第期如何在沒(méi)有實(shí)際項(xiàng)目經(jīng)驗(yàn)的情況下找到工作一篇包含了所有基本點(diǎn)的文章組件設(shè)計(jì)和分解思考中文常用命令嘿,前端丁香園開(kāi)源接口管理系統(tǒng)個(gè)人文章基于的手機(jī)控制電腦實(shí)例掘金如何在上創(chuàng)建 2017-09-17 前端日?qǐng)?bào) 精選 面向初學(xué)者的高階組件教程騰訊IMweb Conf 2017大會(huì)圖文筆記【第1059期】如何在沒(méi)有實(shí)際項(xiàng)目經(jīng)驗(yàn)的情況下找到工...

    RichardXG 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<