簡體   English   中英

用javascript中的正則表達式屏蔽電話號碼

[英]Masking phone number with regex in javascript

我的應用程序有一個特定的電話號碼格式,看起來像999.111.222 ,我有一個正則表達式模式,以掩蓋它在前端:

/[0-9]{3}\.[0-9]{3}\.([0-9]{3})/

但最近,格式被更改為允許中間三位數字少一個數字,所以現在999.11.222999.111.222匹配。 如何相應地更改我的正則表達式?

"999.111.222".replace(/[0-9]{3}\.[0-9]{3}\.([0-9]{3})/, '<div>xxx.xxx.$1</div>')

預期產量:

"999.111.222" // xxx.xxx.222
"999.11.222" // xxx.xx.222

將{3}替換為{2,3}以匹配兩位或三位數。

/[0-9]{3}\.[0-9]{2,3}\.([0-9]{3})/

供參考,參見例如MDN

采用

 console.log( "999.11.222".replace(/[0-9]{3}\\.([0-9]{2,3})\\.([0-9]{3})/, function ($0, $1, $2) { return '<div>xxx.' + $1.replace(/\\d/g, 'x') + '.' + $2 + '</div>'; }) ) 

([0-9]{2,3})第一個捕獲組將匹配2或3個數字,並且在用作替換參數的回調方法中,來自第一個組的所有數字都被替換為x

您也可以進一步自定義第一組數字的模式。

實際上,您不僅應該更改正則表達式,還應該更改回調替換功能:

 const regex = /[0-9]{3}\\.([0-9]{2,3})\\.([0-9]{3})/; const cbFn = (all, g1, g2) =>`<div>xxx.xx${(g1.length === 3 ? 'x' : '')}.${g2}</div>`; const a = "999.11.222".replace(regex, cbFn); const b = "999.111.222".replace(regex, cbFn); console.log(a, b); 

要更改正則表達式,您可以添加帶有{2,3}量詞的術語,如已建議的那樣,並創建一個新組。 然后,在替換cb函數中,您可以使用length來知道是否必須放置一個新的x

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM