2016-12-07 118 views
1

我有一個輸入文本字段,我需要將以前輸入的數字轉換爲此格式111-111-1111將手機格式轉換爲111-111-1111

var regex = /^\(?[0-9]{3}(\-|\)) ?[0-9]{3}-[0-9]{4}$/; // using this to match 

不知道如何轉換,而我需要

+3

'num.replace(/(\ d {3})(\ d {3})(\ d {4 })/,'$ 1- $ 2- $ 3');' – Tushar

+1

或'mum.replace(/ \ D +/g,'').replace(/ ^(\ d {3})(\ d {3}) (\ d {4})。* /,'$ 1- $ 2- $ 3') –

+1

[演示正則表達式更新](https://regex101.com/r/iT8XGO/2) – prasanth

回答

0

您可以刪除所有非數字與replace(/\D+/g, '')第一次,然後在第一個10位數字,格式並丟棄所有其他特定格式與replace(/^(\d{3})(\d{3})(\d{4}).*/, '$1-$2-$3')

var s = " (111) 111-1111 "; 
 
var res = s.replace(/\D+/g, '').replace(/^(\d{3})(\d{3})(\d{4}).*/, '$1-$2-$3'); 
 
console.log(res);

主要正則表達式的詳細信息:

  • ^ - 串的開始
  • (\d{3}) - 第1個捕獲3個位數
  • (\d{3}) - 組2捕獲3位數字
  • (\d{4}) - 第3組捕捉4個數字
  • .* - 任何0+字符除行換行字符外

組內容s通過反向引用($1,$2$3)放回到結果字符串中。

編輯:爲了獲得(111) 111-1111格式,使用

var s = "111111111-1111 "; 
 
var res = s.replace(/\D+/g, '').replace(/^(\d{3})(\d{3})(\d{4}).*/, '($1) $2-$3'); 
 
console.log(res);

+0

如果我需要像(111)111-1111格式輸入格式和輸入將任何?我應該如何改變上面的代碼。 – Acube