2015-04-20 77 views
-1

使用.match().replace()和其他正則表達式-事情,我需要做的正則表達式,它可以改變那些例如輸入字符串:哪個RegExp匹配兩對數字之間的冒號?

'123' 
'1234' 
'qqxwdx1234sgvs' 
'weavrt123adcsd' 

正常輸出的:

'1:23' 
'12:34' 

(所以,三數字羣集必須是x:xx格式)。

+1

我應該爲你的其他情況下,你的代碼嗎?無論如何插入':'或不? –

+1

我認爲您需要提供更多關於您的需求的信息,以瞭解在哪些情況下應放置冒號。例如,「123」應該變成「1:23」還是「12:3」?你希望字母被忽略還是拋出錯誤? – neuronaut

+2

RegExps不插入字符串,tey **匹配**字符串。 –

回答

2

你可以使用String.prototype.replace()的正則表達式匹配1或2位數字後跟2位數字。 $1是第一個捕獲組(1或2位數),$2是第二個捕獲組(2位數)。 $1:$2是替代品,它將替換第一個捕獲組($1)後接冒號(:)的匹配文本,然後是第二個捕獲組($2)。

var string = '123'; 
 
string = string.replace(/^(\d{1,2})(\d{2})$/, '$1:$2'); 
 

 
console.log(string); // "1:23"

正則表達式的說明:

^      the beginning of the string 
    (      group and capture to $1: 
    \d{1,2}     digits (0-9) (between 1 and 2 times 
          (matching the most amount possible)) 
)      end of $1 
    (      group and capture to $2: 
    \d{2}     digits (0-9) (2 times) 
)      end of $2 
    $      before an optional \n, and the end of the 
          string 
相關問題