[英]Format and replace a string with a regular expression
我的電話號碼長度至少為7位數字。 典型的例子: 0000123
, 00001234
, 000012345
我想改造他們,讓他們分別變為: 01:23
, 12:34
, 23: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.