回答
最好的方法是刪除所有非數字,然後將其格式化爲您的首選格式。
var raw_number = str.replace(/[^0-9]/g,'');
var regex1 = /^1?([2-9]..)([2-9]..)(....)$/;
if(!regex1.test(raw_number)) {
// is invalid...
} else {
var formatted_number = str.replace(regex1,'1 ($1) $2 $3')
}
這樣,如果他們進入234/555-0123
它將成爲1 (234) 555 0123
您的首選格式。
這是我發佈的更簡化的版本,除非我不使用第二個正則表達式。 – 2011-04-30 16:55:12
這是一個我使用(jQuery的)的現場驗證的onblur:
http://jsfiddle.net/userdude/Ju72W/
jQuery(document).ready(function($){
$cf = $('#customfield_10117');
$cf.blur(function(e){
phone = $(this).val();
phone = phone.replace(/[^0-9]/g,'');
if (phone.length != 10) {
e.preventDefault();
if (confirm('Phone number must include area code and prefix.')) {
setTimeout(function(){$cf.focus()}, 0);
}
} else {
area = phone.substring(0,3);
prefix = phone.substring(3,6);
line = phone.substring(6);
$(this).val('(' + area + ') ' + prefix + '-' + line);
}
});
});
它檢查如果提交了10個號碼,那麼如果這是真的,則重新格式化爲(000)000-0000格式。
EDIT
使用相同的技術(具有添加的國家代碼限定符)的函數。
http://jsfiddle.net/userdude/Ju72W/1/
jQuery(document).ready(function($){
$cf = $('#customfield_10117');
$cf.blur(function(e){
number = phoneCheckAndFormat(this.value, 11);
if (number === false) {
alert('Entered phone number is not correct.');
return;
}
$(this).val(number);
});
});
function phoneCheckAndFormat(phone, digits) {
phone = phone.replace(/[^0-9]/g,'');
digits = (digits > 0 ? digits : 10);
if (phone.length != digits) {
return false;
} else {
code = '';
if (digits == 11) {
code = '1 ';
phone = phone.substring(1);
}
area = phone.substring(0,3);
prefix = phone.substring(3,6);
line = phone.substring(6);
return code + '(' + area + ') ' + prefix + '-' + line;
}
}
使用正則表達式是好的,我想,如果你是conscienciously限制你的功能美構成的電話號碼。
但是,只要您的代碼需要處理國際關係,該方法不再是最合適的選項。如果你有這樣的計劃,而且你使用的是JavaScript,我建議你看看Google的libphonenumber。
以下JavaScript REGEX驗證123-456-7890或123.456.7890或1234567890或123 456 7890或(123)456-7890
^[(]{0,1}[0-9]{3}[)]{0,1}[-\s\.]{0,1}[0-9]{3}[-\s\.]{0,1}[0-9]{4}$
謝謝,Awais,爲更正。 – Billbad 2011-12-18 21:56:53
PhoneFormat.com具有JavaScript庫,使真正的格式化和驗證數簡單。
- 1. 正則表達式驗證美國電話號碼的格式
- 2. 在wtfforms驗證美國電話號碼
- 3. PHP:驗證美國電話號碼
- 4. 正則表達式來驗證美國電話號碼?
- 5. 正則表達式美國電話號碼驗證
- 6. 使用正則表達式驗證美國電話號碼
- 7. 正在驗證美國電話號碼w /地區代碼
- 8. 如何將電話號碼轉換爲美國格式的電話號碼?
- 9. 驗證美國的電話號碼存在
- 10. JQuery驗證:Regexing非美國電話號碼
- 11. 電話號碼格式和驗證庫
- 12. 電話號碼格式驗證
- 13. 如何驗證電話號碼格式
- 14. 驗證英國電話號碼
- 15. 國際電話號碼驗證與RegEx
- 16. 如何在android中設置美國格式的電話號碼?
- 17. 如何將NSString格式化爲美國的電話號碼?
- 18. 設置美國電話號碼的格式自動
- 19. 的preg_match - 非美國的電話號碼
- 20. 如何自動預先填充美國電話格式驗證
- 21. 的RegularExpressionValidator爲美國電話號碼ASP.net
- 22. 在Javascript中的正則表達式驗證美國電話號碼
- 23. HTML5只允許美國電話號碼?
- 24. 英國和美國電話的電話號碼正則表達式
- 25. 在美國分裂美國電話號碼?
- 26. 格式化國際電話號碼
- 27. 國際電話號碼格式
- 28. 帶空格的電話號碼驗證
- 29. 電話號碼驗證碼
- 30. 寫在美國格式隔開的多個電話號碼逗號
http://stackoverflow.com/questions/1141933/validate-phone-number-existence-for-united-states – 2011-04-30 13:00:04
的重複請指定您認爲可接受的數字格式,以及哪些格式不可接受。例如,以下哪一項對您有效:「+1 303 433 1321」,「1-303-343-1341」,「(333)341-1234」,「333.123.1234」,「333-123- 1234「,」3331231234「。 – Phrogz 2011-04-30 13:01:58
您是否熟悉正則表達式?問題[美國電話號碼驗證](http://stackoverflow.com/q/175488/427545)包含一個很好的問題。 – Lekensteyn 2011-04-30 13:02:49