1
我有一個輸入文本字段,我需要將以前輸入的數字轉換爲此格式111-111-1111
。將手機格式轉換爲111-111-1111
var regex = /^\(?[0-9]{3}(\-|\)) ?[0-9]{3}-[0-9]{4}$/; // using this to match
不知道如何轉換,而我需要
我有一個輸入文本字段,我需要將以前輸入的數字轉換爲此格式111-111-1111
。將手機格式轉換爲111-111-1111
var regex = /^\(?[0-9]{3}(\-|\)) ?[0-9]{3}-[0-9]{4}$/; // using this to match
不知道如何轉換,而我需要
您可以刪除所有非數字與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);
如果我需要像(111)111-1111格式輸入格式和輸入將任何?我應該如何改變上面的代碼。 – Acube
'num.replace(/(\ d {3})(\ d {3})(\ d {4 })/,'$ 1- $ 2- $ 3');' – Tushar
或'mum.replace(/ \ D +/g,'').replace(/ ^(\ d {3})(\ d {3}) (\ d {4})。* /,'$ 1- $ 2- $ 3') –
[演示正則表達式更新](https://regex101.com/r/iT8XGO/2) – prasanth