正則表達的應用

正則表達式學習過屢次,然而過一陣子就忘記了,要用的時候又想不起來。今天抽空作了一下正則的整理,方便之後的複習和查閱。正則表達式

基礎知識:

^向上尖頭學習

當^放在[]裏面,表示取反;放在[]外面,表示一行的字符串的開頭code

eg: /^[^a-b]w+/ 匹配不是a或b開頭的字符串ip

點號 .字符串

在方括號裏:匹配任意一個字符(除了\n)io

在方括號外:匹配任何字符。若是要想表示點號自己,要轉義一下 .console

\d
匹配數字,等價於[0-9]function

\D
匹配一個非數字,等價於 [^0-9]登錄

\s
匹配任何空白字符,包括空格、製表符、換頁符等等。等價於 [\f\n\r\t\v]基礎

\w
匹配數字或字母或下劃線,等價於 [A-Za-z0-9_]

\W
匹配非數字和字母和下劃線,等價於 [^A-Za-z0-9_]

星號 * (數量限定符)
匹配前面的子表達式出現0次或者無限次,等價於{0,}

加號 + (數量限定符)
匹配前面的子表達式出現1次或者屢次,等價於{1,}


匹配前面的子表達式出現0次或者1次,等價於{0,1}

{m}
匹配前面的子表達式出現m次

{m,} (數量限定符)
匹配前面的子表達式至少出現m次

{m,n}
匹配前面的子表達式出現最少m次,最多n次

$
匹配字符串結尾

b
匹配單詞的開始或結束

B
匹配單詞的非開始和結束

方括號[]
[]表示"或"邏輯
eg: [abc]表示a或者b或者c

括號()
單獨使用: 表示分組
括號裏面有 | :表示或邏輯

正向和反向斷言   

(?=pattern)  
(?!pattern)  
(?<=pattern) 
(?<!pattern)

短線- 在方括號中

當-在第一個字符時,表示自己;不在第一個字符時,表示區間
[a-p]表示從a到p

貪婪匹配

貪婪匹配:

正則表達式中包含數量修飾符時,會盡量多的匹配字符。
/a.*b/,它將會匹配最長的以a開始,以b結束的字符串。好比字符串aabab,它會匹配整個字符串。
將貪婪匹配轉化爲懶惰匹配:
數量限定符後加問號

斷言

正向確定:(?=pattern)

正向否認:(?!pattern)

反向確定:(?<=pattern)

反向否認:(?<!pattern)

斷言能夠疊加使用

登陸密碼的例子:

包含大小字母和數字,至少8位

let reg = /^(?=.*?[a-z])(?=.*?[A-Z])(?=.*?[d])[a-zA-Zd]{8,}/g

這個正則表達式,前面三個括號裏是三個正向斷言,即,字符串需知足,從開頭開始,知足 /.*?[a-z]//.*?[A-Z]/ 和 /.*?[d]/。即同時知足。有大寫字母,小寫字母,數字。

正則的例子:

1,千分製表達式:

思路:找到三個數字前面的那個數,給這個數後面加個逗號

str.replace(/(d)(?=(d{3})+$)/g, function ($1) {

    console.log($1)

    return $1 + ','

  })

2, 手機號中間加掩碼

思路:須要匹配的那一項,後面是四個數字

str.replace(/(d{3})(?=d{4}$)/, '***')

3,去掉先後的空格

方法一:

思路:字符串的開頭字符和末尾字符

tip:若是每加g修飾符,將只會去掉str開頭的空格

str.replace(/(^s*)|(s*$)/g, '')

方法二:

思路:要匹配的那一項,先後是空格

tip:子項(.*?)中的問號不能去掉,去掉後會進行末尾的空格將去不掉

str.replace(/^[s]*(.*?)[s]*$/, '$1')

後面會再補充一下非獲取匹配 和 正則表達式的例子。

相關文章
相關標籤/搜索