摘要:應(yīng)用場景正則表達(dá)式的應(yīng)用場景有很多,一般是用來驗(yàn)證字符串,提取字符串和替換字符串。所以我們嘗試著用正則表達(dá)式來解決一下。兩個(gè)正則表達(dá)式為但是同事告訴我只能用一個(gè)表達(dá)式做出來,那么就要使用到之前所說的零寬度反向預(yù)查了。
上一篇文章跟大家介紹了正則表達(dá)式的一些常見知識(shí)點(diǎn)和相關(guān)例子,那這篇文章我就來分享一下自己在工作當(dāng)中所遇到的跟正則表達(dá)式有關(guān)的運(yùn)用案例,看看它在我的工作中發(fā)揮了怎樣的作用。
應(yīng)用場景正則表達(dá)式的應(yīng)用場景有很多,一般是用來驗(yàn)證字符串,提取字符串和替換字符串。
給一個(gè)字符串,把字符串里面的鏈接、數(shù)字、電話等顯示不同的顏色;
給一個(gè)包含自定義表情的文字,找出里面的表情,替換成本地的表情圖片;或者一個(gè)字符串進(jìn)行替換
根據(jù)用戶的輸入內(nèi)容,判斷是否是微信號(hào)、手機(jī)號(hào)、郵箱、純數(shù)字等
我在工作當(dāng)中遇到的例子有好幾個(gè),貼出來讓大家參考一下:
例1:將銀行卡號(hào)的倒數(shù)第四位之前的四個(gè)數(shù)字變成*解析:
銀行卡的位數(shù)實(shí)際是不固定的,如果按照字符串替換的方式的話,就要對銀行卡的位數(shù)進(jìn)行判斷,然后再進(jìn)行替換,需要做多次if-else判斷,這樣代碼實(shí)際上是非常臃腫難看的。
所以我們嘗試著用正則表達(dá)式來解決一下。
先來看銀行卡的規(guī)律,銀行卡數(shù)字在15~19之間,第一個(gè)數(shù)字不能是0,在這里我們要對倒數(shù)第4位前面的4位數(shù)進(jìn)行替換,必然要使用到分組。按照正則里面分組的知識(shí)點(diǎn),分組從左到右依次是組1,組2,組3,依次類推,比如組1,可以用1或者$1來表示。
來看具體代碼:
let reg8 = /^([1-9]{1}d{6,10})d{4}(d{4})$/ let str8a = "370248145284512" //15 let str8b = "3702481452845125" //16 let str8c = "3702481452845125832" //19 console.log("---------銀行卡號(hào)-----------") 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例二: 判斷文本當(dāng)中的年月日
解析:
時(shí)間的判斷是非常常見的,上一篇文章當(dāng)中我們講述捕獲分組和非捕獲分組時(shí)聊到了時(shí)間的判斷,現(xiàn)在我們來看看簡化版的時(shí)間的判斷。
小時(shí)是0-23小時(shí),分和秒都是0-59,根據(jù)它們的規(guī)律我們可以使用分組和修飾符來找到全文的時(shí)間。
具體代碼:
let reg = /((2[0-3])|([0-1]d))(:[0-5]d){2}/g let str = "現(xiàn)在的時(shí)間是12:23:44,下一刻應(yīng)該是12:55:22,但絕不是24:13:34" console.log(str.match(reg)) // ["12:23:44", "12:55:22"]例3: 對選中部分?jǐn)?shù)字進(jìn)行篩選
選出8**0,9**0,同時(shí)不包含8200, 8310, 8520, 8440, 8320, 8100, 8920, 8800, 8180, 8010, 8480, 8150
解析:
這個(gè)是同事的一個(gè)需求,開始我的想法是寫兩個(gè)正則表達(dá)式,一個(gè)將8**0,9**0的數(shù)字選出來,一個(gè)將不包含的數(shù)字選出來,然后從前面的數(shù)字當(dāng)中剔除掉后面的那些數(shù)字。
兩個(gè)正則表達(dá)式為:
re1 = /[8-9]d{2}0/g
reg2 = /8(200|310|520|440|320|100|920|800|180|010|480|150)/g
但是同事告訴我只能用一個(gè)表達(dá)式做出來,那么就要使用到之前所說的零寬度反向預(yù)查了。已知第一個(gè)數(shù)字后面一定不為200,那么使用零寬度反向預(yù)查來進(jìn)行篩選。
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))d{2}0)|(9d{2}0)/g console.log(str9.match(reg9)) // ["8900", "9330", "9120", "9200"]
這個(gè)表達(dá)式第一個(gè)數(shù)字是8或者9,分別進(jìn)行判斷,8后面一定不為題目要求的數(shù)字,零寬度反向預(yù)查和一樣雖然會(huì)限定匹配內(nèi)容,但實(shí)際上是不會(huì)匹配到任何內(nèi)容的。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/99686.html
摘要:第三階段常見對象的學(xué)習(xí)正則表達(dá)式一正則表達(dá)式概述簡單概述就是符合一定規(guī)則的字符串常見規(guī)則字符字符。舉例表示字符反斜線字符。 第三階段 JAVA常見對象的學(xué)習(xí) 正則表達(dá)式 (一) 正則表達(dá)式概述 (1) 簡單概述 就是符合一定規(guī)則的字符串、 (2) 常見規(guī)則 A:字符 x 字符 x。舉例:a表示字符a 反斜線字符。 新行(換行)符 (u000A) 回車符 (u000D) ...
摘要:目錄導(dǎo)語理解正則表達(dá)式模式的規(guī)則字符串和正則實(shí)例的屬性和方法檢索實(shí)例小結(jié)導(dǎo)語正則表達(dá)式是處理字符串的一門藝術(shù)手法,應(yīng)用場景經(jīng)常出現(xiàn)在表單驗(yàn)證部分高級(jí)程序設(shè)計(jì)一書開篇提到,這門語言最原始的應(yīng)用就是處理輸入驗(yàn)證操作,所以正則表達(dá)式從誕生那一刻就 目錄 導(dǎo)語 1.理解正則表達(dá)式 2.模式的規(guī)則 3.字符串和正則實(shí)例的屬性和方法 4.檢索實(shí)例 5. 小結(jié) 導(dǎo)語 正則表達(dá)式是處理字符串的一門藝...
摘要:介紹正則表達(dá)式入門匹配單個(gè)字符什么是正則表達(dá)式正則表達(dá)式,簡稱是一種工具。這份表單用來收集用戶信息,其中包括電話號(hào)碼郵箱地址等,你需要檢驗(yàn)這些信息是否符合正確的語法格式。是一個(gè)正則表達(dá)式。 介紹 正則表達(dá)式入門 匹配單個(gè)字符 什么是正則表達(dá)式? 正則表達(dá)式(Regular Expression,簡稱regex)是一種工具。和其他工具一樣,是為了解決某一類問題而發(fā)明的。學(xué)習(xí)一種工具的...
摘要:控制權(quán)和傳動(dòng)這兩個(gè)詞可能在搜一些博文或者資料的時(shí)候會(huì)遇到,這里做一個(gè)解釋先控制權(quán)是指哪一個(gè)正則子表達(dá)式可能為一個(gè)普通字符元字符或元字符序列組成在匹配字符串,那么控制權(quán)就在哪。 溫馨提示:文章很長很長,保持耐心,必要時(shí)可以跳著看,當(dāng)然用來查也是不錯(cuò)的。 正則啊,就像一座燈塔,當(dāng)你在字符串的海洋不知所措的時(shí)候,總能給你一點(diǎn)思路;正則啊,就像一臺(tái)驗(yàn)鈔機(jī),在你不知道用戶提交的鈔票真假的時(shí)候,...
摘要:遵循特定規(guī)則,利用操作符,終止節(jié)點(diǎn)和其他非終止節(jié)點(diǎn),構(gòu)造新的字符串非終結(jié)符是表示字符串的樹的內(nèi)部節(jié)點(diǎn)。語法中的生產(chǎn)具有這種形式非終結(jié)符終結(jié),非終結(jié)符和運(yùn)算符的表達(dá)式語法的非終結(jié)點(diǎn)之一被指定為根。 大綱 基于狀態(tài)的構(gòu)建 基于自動(dòng)機(jī)的編程 設(shè)計(jì)模式:Memento提供了將對象恢復(fù)到之前狀態(tài)的功能(撤消)。 設(shè)計(jì)模式:狀態(tài)允許對象在其內(nèi)部狀態(tài)改變時(shí)改變其行為。 表驅(qū)動(dòng)結(jié)構(gòu)* 基于語法的構(gòu)...
閱讀 1720·2023-04-25 18:19
閱讀 2148·2021-10-26 09:48
閱讀 1207·2021-10-09 09:44
閱讀 1816·2021-09-09 11:35
閱讀 3097·2019-08-30 15:54
閱讀 2131·2019-08-30 11:26
閱讀 2346·2019-08-29 17:06
閱讀 970·2019-08-29 16:38