簡體   English   中英

格式化字符串並用正則表達式替換

[英]Format and replace a string with a regular expression

我的電話號碼長度至少為7位數字。 典型的例子: 000012300001234000012345

我想改造他們,讓他們分別變為: 01:2312:3423:45

這意味着用最后四個字符替換整個字符串,並在中間放置一個冒號。

我可以使用(\\d{4})$獲得最后4位數字,並且我可以使用以下方式獲得2組: (\\d{2})(\\d{2})$

使用最后一個選項,在字符串0000123 $ 1:$ 2上匹配給我00001:23我想要的位置01:23

我這樣替換字符串:

newVal = val.replace(/regex/, '$1:$2');

您需要用\\d* (或者如果有可能,只用.* )匹配起始數字:

 var val = "0001235"; var newVal = val.replace(/^\\d*(\\d{2})(\\d{2})$/, '$1:$2'); console.log(newVal); 

圖案細節

  • ^ -字符串開頭
  • \\d* -0+個數字(或.*將匹配除換行符以外的任何0+個字符)
  • (\\d{2}) -組1捕獲2位數字
  • (\\d{2}) -第2組捕獲2位數字
  • $ -字符串結尾。

正如Alex K.所說 ,不需要正則表達式,只需使用substr提取所需的部分:

val = val.substr(-4, 2) + ":" + val.substr(-2);

請注意,當起始索引為負數時,它是從字符串的末尾開始的。

例:

 function update(val) { return val.substr(-4, 2) + ":" + val.substr(-2); } function test(val) { console.log(val + " => " + update(val)); } test("0000123"); test("0001234"); test("000012345"); 

使用此正則表達式: ^(\\d+?)(\\d{2})(\\d{2})$

 var newVal = "0000123".replace(/^(\\d+?)(\\d{2})(\\d{2})$/, '$2:$3'); console.log(newVal); 

您可以丟掉第一個字符,而僅替換最后一個匹配的部分。

 console.log('00000001234'.replace(/^(.*)(\\d{2})(\\d{2})$/, '$2:$3')); 

暫無
暫無

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

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