正規表示式應用

2021-09-13 01:44:48 字數 2060 閱讀 6364

正規表示式的應用場景有很多,一般是用來驗證字串,提取字串和替換字串。

給乙個字串,把字串裡面的鏈結、數字、**等顯示不同的顏色;

給乙個包含自定義表情的文字,找出裡面的表情,替換成本地的表情;或者乙個字串進行替換

解析

銀行卡的位數實際是不固定的,如果按照字串替換的方式的話,就要對銀行卡的位數進行判斷,然後再進行替換,需要做多次if-else判斷,這樣**實際上是非常臃腫難看的。

所以我們嘗試著用正規表示式來解決一下。

先來看銀行卡的規律,銀行卡數字在15~19之間,第乙個數字不能是0,在這裡我們要對倒數第4位前面的4位數進行替換,必然要使用到分組。按照正則裡面分組的知識點,分組從左到右依次是組1,組2,組3,依次類推,比如組1,可以用1或者$1來表示。

來看具體**:

let reg8 = /^([1-9]\d)\d(\d)$/

let str8a = '370248145284512' //15

let str8b = '3702481452845125' //16

let str8c = '3702481452845125832' //19

console.log('---------銀行卡號-----------')

console.log(str8a.replace(reg8,`$1****$2`)) // 3702481****4512

console.log(str8b.replace(reg8,`$1****$2`)) // 37024814****5125

console.log(str8c.replace(reg8,`$1****$2`)) // 37024814528****5832

解析

小時是0-23小時,分和秒都是0-59,根據它們的規律我們可以使用分組和修飾符來找到全文的時間。

具體**:

let reg = /((2[0-3])|([0-1]\d))(:[0-5]\d)/g

let str = '現在的時間是12:23:44,下一刻應該是12:55:22,但絕不是24:13:34'

console.log(str.match(reg)) // ["12:23:44", "12:55:22"]

選出8**0,9**0,同時不包含8200, 8310, 8520, 8440, 8320, 8100, 8920, 8800, 8180, 8010, 8480, 8150
解析

這個是同事的乙個需求,開始我的想法是寫兩個正規表示式,乙個將8**0,9**0的數字選出來,乙個將不包含的數字選出來,然後從前面的數字當中剔除掉後面的那些數字。

兩個正規表示式為:

re1 = /[8-9]\\d0/g

reg2 = /8(200|310|520|440|320|100|920|800|180|010|480|150)/g

但是同事告訴我只能用乙個表示式做出來,那麼就要使用到之前所說的零寬度反向預查了。已知第乙個數字後面一定不為200,那麼使用零寬度反向預查來進行篩選。

let str9 = '8200, 8310, 8520, 8440, 8320, 8100, 8920, 8800, 8180, 8010, 8480, 8150, 3434,545656,8544,6554,8900,9330,9120,8333,8200,9200'

let reg9 = /(8(?!(200|310|520|440|320|100|920|800|180|010|480|150))\d0)|(9\d0)/g

console.log(str9.match(reg9)) // ["8900", "9330", "9120", "9200"]

這個表示式第乙個數字是8或者9,分別進行判斷,8後面一定不為題目要求的數字,零寬度反向預查和\b一樣雖然會限定匹配內容,但實際上是不會匹配到任何內容的。

正規表示式應用

d 非負整數 正整數 0 0 9 1 9 0 9 正整數 d 0 非正整數 負整數 0 0 9 1 9 0 9 負整數 d 整數 d 非負浮點數 正浮點數 0 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 正浮點數 d 非正浮點數 負浮點數 0 0 9 0 ...

正規表示式(應用)

在此頁面寫正規表示式,可以提供參考,和進行校驗 應用於前端 匹配任意長度的大小寫字母與數字 a za z0 9 匹配任意長度且不為空的大小寫字母與數字 a za z0 9 匹配長度小於20且不為空的大小寫字母與數字 a za z0 9 匹配長度小於20且不為空的大小寫字母與數字與漢字 a za z0...

正規表示式 應用

生成正規表示式 https http ftp rtsp mms s 分析 如果沒有在 裡面的時候,代表以什麼開頭 如果在 裡面的時候,代表除了 之外 https http ftp rtsp mms 代表乙個分組 進行分組的時候,findall方法只返回分組裡面的內容 print re.findall...