2015-05-06 73 views
0

使用正則表達式的電話號碼格式化解決方案,我想包括用戶輸入擴展名的可能性。有條件的帶括號的子字符串替換

例如,如果用戶輸入類似+121255512341212東西,它們的輸入端通過以下

然而,如果用戶輸入一個號碼沒有擴展格式化爲+1 (212) 555-1234 ext 1212(例如+12125551234),輸出仍包含ext

在上面的代碼片斷放在一邊
var reg = /(\+?\d{1})?\(?(\d{3})\)?[- ]?(\d{3})[- ]?(\d{4})?\W*\s*(\d+)?/g; 
var substr = '$1 ($2) $3-$4 ext $5'; 

'+121255512341212'.replace(reg, substr); // '+1 (212) 555-1234 ext 1212' 
'+12125551234'.replace(reg, substr); // '+1 (212) 555-1234 ext' 

中存在的問題....有沒有一種方法,我可以建立一個條件爲substr使ext只有當輸出具有$5實際內容?

或者我正在做這個錯誤的方式......?

回答

2

一個額外更換的伎倆:

.replace(reg, substr).replace(/ ext $/, ""); 
+0

輝煌。謝謝@collapsar。 :) – sfletche

相關問題