成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

正則表達(dá)式應(yīng)用

junbaor / 784人閱讀

摘要:應(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

相關(guān)文章

  • 正則達(dá)式的規(guī)則及應(yīng)用

    摘要:第三階段常見對象的學(xué)習(xí)正則表達(dá)式一正則表達(dá)式概述簡單概述就是符合一定規(guī)則的字符串常見規(guī)則字符字符。舉例表示字符反斜線字符。 第三階段 JAVA常見對象的學(xué)習(xí) 正則表達(dá)式 (一) 正則表達(dá)式概述 (1) 簡單概述 就是符合一定規(guī)則的字符串、 (2) 常見規(guī)則 A:字符 x 字符 x。舉例:a表示字符a 反斜線字符。 新行(換行)符 (u000A) 回車符 (u000D) ...

    jzzlee 評論0 收藏0
  • JavaScript標(biāo)準(zhǔn)庫系列——RegExp對象(三)

    摘要:目錄導(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á)式是處理字符串的一門藝...

    邱勇 評論0 收藏0
  • 正則達(dá)式 (一)

    摘要:介紹正則表達(dá)式入門匹配單個(gè)字符什么是正則表達(dá)式正則表達(dá)式,簡稱是一種工具。這份表單用來收集用戶信息,其中包括電話號(hào)碼郵箱地址等,你需要檢驗(yàn)這些信息是否符合正確的語法格式。是一個(gè)正則表達(dá)式。 介紹 正則表達(dá)式入門 匹配單個(gè)字符 什么是正則表達(dá)式? 正則表達(dá)式(Regular Expression,簡稱regex)是一種工具。和其他工具一樣,是為了解決某一類問題而發(fā)明的。學(xué)習(xí)一種工具的...

    graf 評論0 收藏0
  • JS正則達(dá)式一條龍講解,從原理和語法到JS正則、ES6正則擴(kuò)展,最后再到正則實(shí)踐思路

    摘要:控制權(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í)候,...

    Michael_Lin 評論0 收藏0
  • 第6章:可維護(hù)性軟件構(gòu)建方法 6.3可維護(hù)性構(gòu)建技術(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)...

    young.li 評論0 收藏0

發(fā)表評論

0條評論

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