【寫在最前】
我們?cè)谄綍r(shí)的編程學(xué)習(xí)中,經(jīng)常會(huì)接觸到“正則表達(dá)式”這個(gè)概念;
但是很多小白傻傻分不清楚它的正確用法以及適用場(chǎng)景,甚至是在查閱了很多資料之后仍然是云山霧罩。
通過本文知識(shí),讓我們花5分鐘時(shí)間徹底搞懂它,相信聰明的你,看完一定會(huì)有收獲。
# 基本知識(shí)
定義: 正則表達(dá)式定義了字符串的匹配模式。
適用: 正則表達(dá)式可以用來(lái)匹配、搜索、替換文本。
注意: 正則表達(dá)式并不僅限于某一種語(yǔ)言,但是在每種語(yǔ)言中有細(xì)微的差別。
# 常用符號(hào)學(xué)習(xí)
正則表達(dá)式有很多符號(hào),大體可歸納為 5 種類型:
1) 括號(hào)
小括號(hào):表示精準(zhǔn)匹配
(x|y):精確匹配字符串( | 符號(hào)用于分隔“或”關(guān)系的選項(xiàng))
中括號(hào): 表示模糊匹配
[abc]: 模糊匹配a,b,c任意一個(gè)字符
[a-z]:模糊匹配a-z任意一個(gè)小寫字母
[0-9]: 模糊匹配0-9任意一個(gè)數(shù)字
大括號(hào):表示匹配多次
{n} : 匹配n次
{m,n}:匹配m到n次 (m可省略,即:{,n} 表示匹配0到n次)
舉例: "/pre{1,5}/" 表示匹配在"pr"后面出現(xiàn)1個(gè)到5個(gè)"e"的字符串,
比如"pre"、"pree"、"preeeee"
2) 元字符
d :匹配任意一個(gè)數(shù)字字符,等價(jià)于定義 [0-9]
. : 匹配任意一個(gè)英文字符
w: 匹配任意一個(gè)單詞(包括下劃線)(約等價(jià)于定義“[A-Za-z0-9_]”,這里的"單詞"字符使用Unicode字符集(并不是所有語(yǔ)言都支持w寫法)
3) 量詞符號(hào)
*: 匹配元字符“前”的字符出現(xiàn)零次或者多次,等價(jià)于定義 "{0,}"。
舉例: "/ac*/" 表示匹配在"a"后面出現(xiàn)零個(gè)或者多個(gè)"c"的字符串。
比如:"App"、"acp"、"accp"等
?: 匹配元字符前的字符出現(xiàn)零次或者1次,等價(jià)于定義 "{0,1}"。
+: 匹配指定元字符出現(xiàn)的一次或者多次,等價(jià)于定義 "{1,}
4) 其他符號(hào):
^ : 匹配字符串的開始(注意:當(dāng)且僅當(dāng)^定義在中括號(hào)[]內(nèi)部時(shí)表示”非“關(guān)系)
$ : 匹配字符串的結(jié)束
5)特殊的標(biāo)記修飾符
標(biāo)記修飾符(flags)不寫在正則表達(dá)式里,而位于表達(dá)式之外,
格式如下:/pattern/flags
常見的flags標(biāo)記修飾符有:
i: 表示匹配是無(wú)需區(qū)分大小寫
g: 表示全部都需要匹配(而不是只匹配第一個(gè))
m: 表示需要匹配多行(而不是只匹配第一行)
# 綜合舉例
新用戶注冊(cè)時(shí),只允許:用戶名包含字符、數(shù)字、下劃線、連字符,長(zhǎng)度限制最端3位,最長(zhǎng)15位,那么其正則表達(dá)式如下圖:
【全文完】
----------------------------------------
十年技術(shù)沉淀,只做原創(chuàng)文章;
及時(shí)關(guān)注作者,成就大牛之路!