搜尋
首頁web前端js教程在JavaScript中使用電話號碼

在JavaScript中使用電話號碼

>當您從用戶那裡收集數據時,面臨兩個關鍵挑戰。收集這些信息並驗證它。某些類型的信息很簡單 - 例如,某人的年齡並不是更簡單的收集和驗證。名字並不像聽起來那樣簡單,但可以為您提供邊緣案例和國際變化的餐飲(例如,顧客,手提義,甚至是具有連字符的姓氏的人),您不會出錯(儘管很多應用程序和大量的應用程序和服務可以!)。電子郵件地址雖然從理論上講非常容易驗證,但面臨著自己的挑戰 - 但是,野外有很多正則表達不太正確。

,然後有電話號碼。這些很難。真的很難。在本文中,我將討論有關收集,驗證和顯示電話號碼的一些挑戰。

鑰匙要點

由於其各種格式以及全球編號系統的動態性質,電話號碼在編程中很複雜。

正則表達式通常不足以驗證國際電話號碼,因為它們的複雜性和可變性。
  • > e.164標準對於明確表示全局電話號碼至關重要,為存儲和系統使用提供了一致的格式。
  • > Google的LibphoneNumber庫是用於解析,驗證和格式化電話號碼的強大工具,可用於JavaScript和Node.js Environments。
  • > INTL-TEL輸入jQuery插件通過與LibphoneNumber集成以有效處理國際電話輸入字段,從而增強了用戶體驗。
  • >在收集電話號碼,確保遵守本地法規並保持用戶信任和舒適性時,請始終考慮法律和可用性問題。
  • >
  • 為什麼電話號碼有所不同
  • 也許您在想,由於電話號碼往往遵循非常嚴格的格式,例如:

…應該簡單地構建一個簡單的正則表達式來驗證它們。實際上,這是一個:

>

<br>
202-456-1111<br>
好吧,就在那裡。對於初學者來說,這裡只是上面數字的一些變體,所有這些都完全有效:

因此,基於這一點,我們知道正則表達式不像我們首先想到的那樣簡單 - 但這只是其中的一半。這些示例僅適用於美國的數字。當然,如果您知道要收集的數字將用於特定國家 /地區,則可以使用正則表達式。否則,這種方法將不會削減。

<br>
^(\([0-9]{3}\)|[0-9]{3}-)[0-9]{3}-[0-9]{4}$<br>
>讓我們看一下有關電話號碼的其他一些問題,以及為什麼它們使我們的工作變得更加努力。

數字更改

>各種外部因素可能對電話編號有影響。整個國家來來去去,引入了新的國家前綴。數字的新分類引入了新的編號系統 - 高級速率,本地利率,免費電話等。當運營商用完一組數字(可悲的是,高級利率)時,他們只是引入了一個新的前綴。

一些變化具有巨大的影響;例如,在幾年前的英國,整個區域編號系統都發生了巨大的變化,幾乎每個區域代碼都插入了其他“ 1”。即使那樣,首都也有一個微妙的系統。在全國范圍內更改標牌以反映變化大概是十年的。

當然,移動設備中有巨大和前所未有的增長。不再需要電話號碼的數量在很大程度上僅限於家庭數量,而是多次。可用數字池的持續壓力只會增加進一步變化的可能性。

國際撥號代碼

>捕獲數字的國際撥號代碼通常很重要。在某些情況下,上下文可能意味著不需要。例如,如果您在一個國家 /地區運營,並且將捕獲電話號碼以被人類操作員使用,則可能不需要它們。但是,對於任何遠程自動化的東西(例如發送SMS消息)或有效地驗證它們,您需要捕獲國家前綴。

國家圖書館包含許多地理信息,其中包括國際撥號代碼。這是來自國家 /地區的摘錄。

如您所見,這表明奧地利使用國際撥號代碼43. >

那麼我們如何使用此信息?好吧,使用lodash(或下劃線)的魔法,我們可以通過幾種方式查詢與代碼相關的信息。

> 例如,要找出給定的撥號代碼是否有效:>
<br>
202-456-1111<br>

當然,

有更效率的方法可以做到這一點。

我們可以查找使用特定撥號代碼的國家 /地區:

>

<br>
^(\([0-9]{3}\)|[0-9]{3}-)[0-9]{3}-[0-9]{4}$<br>
>最後,我們可以獲取給定國家 /地區的撥號代碼:

>

>您會在文章附帶的存儲庫中找到這些功能作為模塊以及單元測試。

。 但是,即使是國際撥號代碼,也並不像您想像的那樣簡單。格式可以變化 - 1,43,962 1868都是有效的代碼。不一定是一對一的映射; 44例如,不僅用於英國,還用於馬恩島,根西島和澤西島。
<br>
202 456 1111<br>
(202) 456 1111<br>
2024561111<br>
1-202-456-1111<br>
1-202-456-1111 x1234<br>
1-202-456-1111 ext1234<br>
1 (202) 456-1111<br>
1.202.456.1111<br>
1/202/456/1111<br>
12024561111<br>
+1 202 456 1111<br>
還必鬚根據撥號的位置更改數字。從國外,要撥打英國號碼,您需要丟棄帶撥號代碼44的前面零和前綴:

<br>
202-456-1111<br>
…變成…

<br>
^(\([0-9]{3}\)|[0-9]{3}-)[0-9]{3}-[0-9]{4}$<br>
>您也可以用雙零替換“”:

>

<br>
202 456 1111<br>
(202) 456 1111<br>
2024561111<br>
1-202-456-1111<br>
1-202-456-1111 x1234<br>
1-202-456-1111 ext1234<br>
1 (202) 456-1111<br>
1.202.456.1111<br>
1/202/456/1111<br>
12024561111<br>
+1 202 456 1111<br>
使事情變得更複雜,有些數字在從一個國家 /地區召喚的情況下會有所不同,具體取決於您從哪個國家 /地區撥打的國家 /地區。例如,在美國,數字也必須以美國退出代碼011為前綴,因此上面的示例變為:>

幸運的是,我們可以使用一種格式,使我們能夠解決這些變化。

> e.164
<br>
{<br>
"name": {<br>
"common": "Austria",<br>
"official": "Republic of Austria",<br>
// ... //<br>
},<br>
// ... //<br>
"callingCode": ["43"],<br>
// ... //<br>
},<br>
幸運的是,對於開發人員而言,

有一個明確的,國際公認的電話號碼,是世界上任何地方的電話號碼,名為E.164。格式分解如下:

>

電話號碼最多可以有15位數字

電話號碼的第一部分是國家代碼
    >
  • 第二部分是國家目的地代碼(NDC)
  • 最後一部分是訂戶編號(sn)
  • NDC和SN一起被共同稱為國家(重要)數字>
  • > source
  • 以前是E.164格式的數字:>

我們可以使用相同的格式,例如一個基於倫敦的英國號碼:>

>我們可以使用e.164格式表示任何有效的電話號碼。我們知道它指的是哪個國家,而且毫無意義 - 使其成為存儲的理想選擇。它也通常用於基於電話的服務(例如SMS提供商),正如我們稍後會看到的。

>當然有一個漁獲。 E.164標準可能非常適合存儲,但對於兩件事來說很可怕。首先,幾乎沒有人會以這種格式輸入或讀取其號碼。其次,就其可讀性而言,它是絕望的。但是,稍後,當我們看一下libphonenumber時,我們會發現有一些格式化數字的方法。
<span>var _ = require('lodash')
</span><span>, data = require('world-countries')
</span>module<span>.exports = {
</span><span>/**
</span><span>* Determines whether a given international dialing code is valid
</span><span>*
</span><span>* <span>@param string code
</span></span><span>* <span>@return bool
</span></span><span>*/
</span><span>isValid : function(code) {
</span><span>var codes = _.flatten(_.pluck(data, 'callingCode'));
</span><span>return _.contains(codes, code);
</span><span>}
</span><span>// ...
</span><span>}</span>
>

收集電話號碼

首先,讓我們看一下收集電話號碼的問題。

>
<span>/**
</span><span>* Gets a list of countries with the specified dialing code
</span><span>*
</span><span>* <span>@param string code
</span></span><span>* <span>@return array An array of two-character country codes
</span></span><span>*/
</span><span>getCountries : function(code) {
</span><span>var countryEntries = _.filter(data, function(country){
</span><span>return (_.contains(country.callingCode, code));
</span><span>})
</span><span>return _.pluck(countryEntries, 'cca2');
</span><span>}</span>
> html5和“ tel”輸入

> HTML5引入了一種新的“ TEL”輸入類型。但是,由於格式的變化問題,它實際上並沒有對用戶可以輸入的內容施加任何限制,也不會以與電子郵件元素相同的方式執行任何驗證。但是,有一些優點 - 在移動網站上使用用戶的電話鍵盤通常會顯示,而不是常規的鍵盤佈局。 >

您可以使用單個元素來收集一個數字:

或者,您可以將數字分解為單獨的元素:

<br>
202-456-1111<br>

>瀏覽器支持非常好(例如,Chrome 6,Firefox 4,Safari 5,即10),但是即使在較舊的瀏覽器中,它也只會落到一個普通的舊文本字段。

>我們是否應該確定正則表達式足夠 - 請記住,存在問題 - 然後我們可以使用模式屬性添加一些驗證:

<br>
^(\([0-9]{3}\)|[0-9]{3}-)[0-9]{3}-[0-9]{4}$<br>
>屏蔽輸入

>掩蓋的輸入是限制用戶輸入或提供預期格式的提示的常見技術。但是,再說一次,除非您確信數字總是適合一個特定國家,否則很難迎合國際變化。但是,通過做出假設來惹惱用戶是一回事 - 要求非US用戶提供狀態和郵政編碼。使一個完全無法使用的形式是另一回事,例如,強迫人們以某種​​國家的格式提供數字。

但是,如果您知道某些數字將在特定範圍內,則它們可以有效。這是給我們電話號碼的蒙版輸入的示例。

更好的方法

>有一種以出色的jQuery插件的形式收集電話號碼的更好,更靈活的方法。下面說明了。

在JavaScript中使用電話號碼>您也可以在此處進行現場演示。

>用法很簡單 - 確保您已包括jQuery,庫和CSS文件,並且Flag Sprite可用並從CSS中正確引用 - 您會在build/img/flags.png中找到它。 。

接下來,創建一個元素:

最後,將其註入如下:
<br>
202 456 1111<br>
(202) 456 1111<br>
2024561111<br>
1-202-456-1111<br>
1-202-456-1111 x1234<br>
1-202-456-1111 ext1234<br>
1 (202) 456-1111<br>
1.202.456.1111<br>
1/202/456/1111<br>
12024561111<br>
+1 202 456 1111<br>

>有關配置選項的完整列表,請諮詢文檔。稍後,我們將查看Utilsscript選項,但首先,我們需要深入研究另一個有用的庫。
<br>
{<br>
"name": {<br>
"common": "Austria",<br>
"official": "Republic of Austria",<br>
// ... //<br>
},<br>
// ... //<br>
"callingCode": ["43"],<br>
// ... //<br>
},<br>
介紹性libphonenumber

幸運的是,我們許多驗證和格式的困境都有解決方案。 Google的LibphoneNumber庫最初是為Android操作系統開發的,提供了各種方法和用戶用於使用電話號碼的方法。更好的是,它已從Java移植到JavaScript,因此我們可以在Web或Node.js應用程序中使用它。

>

>安裝

>您可以從項目主頁上下載庫,如您所期望的 - Google Code。

您也可以通過NPM獲得它。這是項目頁面,然後從命令行安裝:

您也可以使用Bower安裝它:

<span>var _ = require('lodash')
</span><span>, data = require('world-countries')
</span>module<span>.exports = {
</span><span>/**
</span><span>* Determines whether a given international dialing code is valid
</span><span>*
</span><span>* <span>@param string code
</span></span><span>* <span>@return bool
</span></span><span>*/
</span><span>isValid : function(code) {
</span><span>var codes = _.flatten(_.pluck(data, 'callingCode'));
</span><span>return _.contains(codes, code);
</span><span>}
</span><span>// ...
</span><span>}</span>

如果您正在考慮在前端項目中使用它,但是要警告 - 即使縮小和壓縮,它也超過200kb。

>解析數字

為了演示庫的主要功能,我將假設您正在編寫Node.js應用程序。您可以在存儲庫中找到一些補充本文的示例代碼。

>

首先,導入Phoneutil:

現在,您可以使用其parse()方法來解釋電話號碼:>
<br>
202-456-1111<br>

我們可以做很多事情。讓我們首先從圖書館導入一些常數。將您的要求聲明更改為以下內容:

<br>
^(\([0-9]{3}\)|[0-9]{3}-)[0-9]{3}-[0-9]{4}$<br>

現在我們可以執行以下操作:

>
<br>
202 456 1111<br>
(202) 456 1111<br>
2024561111<br>
1-202-456-1111<br>
1-202-456-1111 x1234<br>
1-202-456-1111 ext1234<br>
1 (202) 456-1111<br>
1.202.456.1111<br>
1/202/456/1111<br>
12024561111<br>
+1 202 456 1111<br>

的輸出將如下:

<br>
{<br>
"name": {<br>
"common": "Austria",<br>
"official": "Republic of Austria",<br>
// ... //<br>
},<br>
// ... //<br>
"callingCode": ["43"],<br>
// ... //<br>
},<br>

現在嘗試在沒有國際撥號代碼的情況下解析數字:>

<span>var _ = require('lodash')
</span><span>, data = require('world-countries')
</span>module<span>.exports = {
</span><span>/**
</span><span>* Determines whether a given international dialing code is valid
</span><span>*
</span><span>* <span>@param string code
</span></span><span>* <span>@return bool
</span></span><span>*/
</span><span>isValid : function(code) {
</span><span>var codes = _.flatten(_.pluck(data, 'callingCode'));
</span><span>return _.contains(codes, code);
</span><span>}
</span><span>// ...
</span><span>}</span>

這將拋出以下例外:

<span>/**
</span><span>* Gets a list of countries with the specified dialing code
</span><span>*
</span><span>* <span>@param string code
</span></span><span>* <span>@return array An array of two-character country codes
</span></span><span>*/
</span><span>getCountries : function(code) {
</span><span>var countryEntries = _.filter(data, function(country){
</span><span>return (_.contains(country.callingCode, code));
</span><span>})
</span><span>return _.pluck(countryEntries, 'cca2');
</span><span>}</span>

這是因為沒有解釋數字是為哪個國家,就無法解釋。 parse()方法採用可選的第二個參數,即ISO 3166-1 alpha-2(即兩個字符)國家代碼。

如果您再次嘗試這條線,但是這次將“我們”作為第二個論點,您會發現結果與以前一樣:

<span>/**
</span><span>* Gets the dialing codes for a given country
</span><span>*
</span><span>* <span>@param string country The two-character country code
</span></span><span>* <span>@return array An array of strings representing the dialing codes
</span></span><span>*/
</span><span>getCodes : function(country) {
</span><span>// Get the country entry
</span><span>var countryData = _.find(data, function(entry) {
</span><span>return (entry.cca2 == country);
</span><span>});
</span><span>// Return the code(s)
</span><span>return countryData.callingCode;
</span><span>}</span>

>您也可以使用這些格式來玩法;所有這些也將起作用:

<br>
020 7925 0918<br>

解釋英國編號:

<br>
+44 20 7925 0918<br>

>這將輸出以下內容:

<br>
0044 20 7925 0918<br>

>分解一個數字後,您可以對其進行驗證 - 正如我們在下一部分中所看到的。

驗證一個數字

<br>
011 44 20 7925 0918<br>
>驗證遵循類似的模式;同樣,有第二個可選的論點,但是如果沒有暗示該國家 /

這是一些有效數字的示例,其中將國家代碼作為第二個參數提供,或者包含在第一個參數中:

如果您不提供國家代碼,或者不含義,則會遇到與以前相同的錯誤:

以下是一些示例,其中驗證失敗,返回false:
<br>
+12024561111<br>

但是,請警告

,因為一個無效的數字可能會引發例外:

<br>
+442079250918<br>

確定數字類型

有時,知道電話號碼的 type 很有用。例如,您可能希望確保為您提供了一個手機號碼 - 也許您打算發送SMS消息,例如實施兩因素身份驗證 - 或嘗試淘汰高級費率號。

庫的getNumberType()函數就是這樣。讓我們看看
<span><span><span><input> type<span>="tel"</span> name<span>="number"</span>></span></span></span>

該函數將解析的電話號碼作為參數:

<span><!-- area code and number -->
</span><span><span><span><input> type<span>="tel"</span> name<span>="number"</span>></span>
</span><span><!-- country code, area code and number -->
</span><span><span><span><input> type<span>="tel"</span> name<span>="country"</span> size<span>="4"</span>></span> <span><span><input> type<span>="tel"</span> name<span>="area"</span> size<span>="6"</span>></span> <span><span><input> type<span>="tel"</span> name<span>="number"</span> size<span>="8"</span>></span>
</span><span><!-- US-style -->
</span>(<span><span><span><input> type<span>="tel"</span> size<span>="3"</span>></span>) <span><span><input> type<span>="tel"</span> size<span>="3"</span>></span> - <span><span><input> type<span>="tel"</span> size<span>="4"</span>></span></span></span></span></span></span></span></span></span>

返回值是在Phonenumbertype子模塊中定義的常數 - 您會記得我們需要將其作為pnf。

作為一個例子,讓我們查詢有關的數字是移動電話還是固定行:>

<br>
202-456-1111<br>
>似乎是主題的主題,自然會有一個收穫。有時,即使是LibphoneNumber庫也無法確定。例如,我們的數字不能輕易區分;因此,常數pnt.fixed_line_or_mobile。

>我們只需要更改我們的示例代碼即可反映這種不確定性:>

也有許多其他可能性。這是當前的完整列表:
<br>
^(\([0-9]{3}\)|[0-9]{3}-)[0-9]{3}-[0-9]{4}$<br>

pnt.fixed_line
  • > pnt.mobile
  • pnt.fixed_line_or_mobile
  • > pnt.toll_free
  • pnt.prem_rate
  • > pnt.shared_cost
  • pnt.voip
  • > pnt.personal_number
  • > pnt.pager
  • > pnt.uan
  • > pnt.inknown
  • 如您所見,PNT.Inknown反映了這樣一個事實,即我們不一定會以任何確切的方式收集任何信息。因此,總而言之,儘管此功能可以作為快速初始檢查有用,但我們不能依靠它。
  • 是服務中的數字嗎?
>

>有很多電話號碼可以驗證,但不使用。他們可能已經斷開連接,尚未分配,或者也許已經放下了廁所。

如果您需要確保一個數字不僅有效,而且還活躍,則有許多選項對您打開。

>

>一種方法是要求用戶確認其電話號碼,與您可能要求用戶確認其電子郵件地址的方式幾乎相同。您可以使用Twilio之類的服務發送SMS,甚至可以打電話。

>

這是一個非常簡單的代碼段,用於使用Twilio通過SMS生成和發送確認代碼

>然後,要求用戶將代碼輸入您的Web應用程序中的表單以驗證它是一個瑣碎的練習 - 或者您甚至可以允許人們通過回复消息來驗證其數字。

>也有(付費)服務,可以檢查一個數字是否實時為您服務,例如Byteplant。

其他問題

<br>
202 456 1111<br>
(202) 456 1111<br>
2024561111<br>
1-202-456-1111<br>
1-202-456-1111 x1234<br>
1-202-456-1111 ext1234<br>
1 (202) 456-1111<br>
1.202.456.1111<br>
1/202/456/1111<br>
12024561111<br>
+1 202 456 1111<br>
法律

與任何個人信息一樣,也有很多法律問題要注意。例如,在英國,電話偏好服務(TPS)是全國電話號碼登記冊,已由不希望接收營銷通信的人們進行了解釋。有付費服務提供API來檢查針對此登記冊的數字。

>可用性注意事項

>非常常見的是,以單一形式要求多達三個不同的電話號碼;例如白天,晚上和手機。

>還值得記住的是,通過互聯網詢問電話號碼可能會遇到相當侵入性。如果某人不願意提供該信息,儘管您將其設置為必需的領域,那麼他們可能會做兩件事之一:

  • 試圖“欺騙”驗證。根據方法,它們可能會鍵入“ Ex Directory”或輸入無效的數字,例如僅包含數字的數字。
  • >
  • 走開。

>將jQuery插件與libphoneNumber

組合

>您可能還記得jQuery插件具有一個名為utilsscript的較神秘的選項。

此選項使我們能夠利用LibphoneNumber的驗證和格式化功能。選擇一個國家(使用下拉列表或鍵入撥號代碼)之後,它將將文本場轉換為蒙版的輸入,以反映該國家的編號格式。

該插件包含libphoneNumber包裝的版本;如下:

<br>
202-456-1111<br>
正如我之前提到的,請記住,由於LibphoneNumber庫的文件大小,應謹慎使用此方法。但是,在構造函數中在此處引用它確實意味著可以按需加載。

顯示電話號碼

>我們研究瞭如何使用pnf.international和pnf.national等格式顯示在顯示更“友好”時如何格式化數字。

>我們還可以使用TEL和CALLTO協議將超鏈接添加到電話號碼上,這些電話號碼在移動網站上特別有用 - 允許用戶直接從網頁撥打一個數字。

> 為此,我們需要鏈接本身的e.164格式 - 例如:

>

當然,您可以使用LibphoneNumber庫的格式()方法來渲染e.164版本(pnf.e164)和更具用戶友好的顯示版本。

microdata

>我們還可以使用MicroDATA以語義標記電話號碼。這是一個例子;請注意使用itemprop =“電話”來標記鏈接:
<br>
^(\([0-9]{3}\)|[0-9]{3}-)[0-9]{3}-[0-9]{4}$<br>
>

摘要

在本文中,我們打開了黃蜂巢是電話號碼。到目前

我們已經研究了一些用於收集數字的方法 - “ TEL”輸入類型,掩蓋輸入和INTL-TEL輸入jQuery插件。 然後,我們查看了有關驗證的一些問題,以及為什麼諸如正則表達式之類的常見方法通常不足,尤其是當您國際化時。

我們看了Google的LibphoneNumber圖書館;使用它來解析,驗證,顯示和確定電話號碼的類型。

>
<br>
202 456 1111<br>
(202) 456 1111<br>
2024561111<br>
1-202-456-1111<br>
1-202-456-1111 x1234<br>
1-202-456-1111 ext1234<br>
1 (202) 456-1111<br>
1.202.456.1111<br>
1/202/456/1111<br>
12024561111<br>
+1 202 456 1111<br>
>我們將INTL-TEL輸入插件與LibphoneNumber相結合,以獲得更好的用戶體驗,儘管它以性能為代價。

>

>最後,我們研究瞭如何在HTML中標記電話號碼。

>

我將為處理電話號碼提出一些建議:>

    除非您僅在一個國家 /地區開展業務,否則請注意國際差異。
  • 使用謹慎的蒙版輸入。
  • >
  • 對基於正則表達的驗證非常小心。
  • >在可能的情況下,使用e.164進行存儲。
  • 使用Google的LibphoneNumber圖書館。
  • 顯示數字時,將其格式化時,使用TEL:或CALLTO:鏈接類型,並使用Microdata。
  • 關於JavaScript中的電話號碼的常見問題
  • >如何從JavaScript中的電話號碼中獲取國家代碼?

>

>從JavaScript中的電話號碼中提取國家代碼,您可以利用Google提供的LibphoneNumber庫。該庫是用於解析,格式化和驗證電話號碼的強大工具,使其成為準確提取國家代碼的理想選擇。要開始,您需要使用NPM安裝庫,然後將其導入到JavaScript文件中。導入後,您可以使用Phonenumberutil類有效地使用電話號碼。

為了從電話號碼中提取國家代碼,您應該首先使用Parse功能解析電話號碼。此功能將電話號碼作為字符串和可選的默認區域代碼,通常是ISO 3166-1 Alpha-2國家代碼。解析後,您可以訪問Phonenumber對象並使用GetCountryCode方法作為整數獲取國家代碼。這種方法可確保處理國際電話號碼的準確性,並考慮到各種區域格式

>

>如何在JavaScript中使用國家代碼的電話號碼驗證?

>由於各種國際電話號碼格式,在JavaScript中驗證使用國家代碼的電話號碼可能是一項複雜的任務。為了確保准確的驗證,一種有效的方法是使用Google使用“ LibphoneNumber”庫。該庫提供了用於解析,格式化和驗證電話號碼的全面工具,使其成為為此目的的可靠選擇。
要開始使用,您需要使用NPM安裝“ LibphoneNumber”庫,然後將其導入到JavaScript文件中。導入後,您可以利用圖書館的Phonenumberutil類執行電話號碼驗證。具體來說,ISVALIDNUMBER函數允許您驗證一個解析的電話號碼,如果該號碼有效或錯誤,則返回true。通過使用圖書館的功能來解析電話號碼,您可以確保其遵守與所提供的國家 /地區代碼相關的特定格式和規則。
此方法為使用國家 /地區代碼驗證電話號碼提供了強大的解決方案,提供了準確的手段處理具有不同格式和標準的國際電話號碼。通過實施“ LibphoneNumber”庫,您可以顯著提高JavaScript應用程序中電話號碼驗證的精確性和可靠性。

>如何將國家代碼與JavaScript中的國家代碼分開?將國家代碼與JavaScript中的電話號碼分開是一項常見的任務,尤其是在處理國際電話號碼時。一種實用的方法涉及使用正則表達式和弦操作。您可以定義正則表達方式以匹配國家代碼,該代碼通常表示為加號,然後是一個或多個數字。正則表達式(例如(d))有效地從電話號碼中捕獲了國家代碼。

>

一旦您擁有正則表達式模式,就可以使用EXEC方法將其應用於電話號碼。 EXEC方法返回包含電話號碼的匹配部分和任何捕獲組的數組。在這種情況下,可以從數組中的第一組訪問捕獲的國家代碼(索引1)。通過遵循此過程,您可以準確地將國家代碼與電話號碼分開,並可以在JavaScript應用程序中進一步使用。

此方法用途廣泛,並且可以適應各種電話號碼格式。無論您是處理用戶輸入還是從外部來源處理電話號碼,此方法都可以確保您可以可靠地提取國家代碼,這是使用國際電話號碼的重要一步。

>

我如何在國際上格式化我的電話號碼?

>格式化電話號碼以確保不同地區的清晰度和兼容性至關重要。國際格式的電話號碼通常由三個主要組件組成:國家代碼,區域代碼(如果適用)和本地電話號碼。國家代碼以加號()為代表,然後是數字代碼,例如美國的1。它是該國或地區的普遍認可的標識符。
在某些情況下,可能包括區域代碼,通常與空間或連字符的數字分開。以下是本地電話號碼,該號碼的長度可能會有所不同,並且可能包含其他分離器或標點符號。國家之間的特定格式可能會有所不同,因此重要的是在可用的情況下遵循當地慣例。通過遵守此結構,您可以確保在國際邊界中易於識別和可用的電話號碼。

以上是在JavaScript中使用電話號碼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
Python vs. JavaScript:社區,圖書館和資源Python vs. JavaScript:社區,圖書館和資源Apr 15, 2025 am 12:16 AM

Python和JavaScript在社區、庫和資源方面的對比各有優劣。 1)Python社區友好,適合初學者,但前端開發資源不如JavaScript豐富。 2)Python在數據科學和機器學習庫方面強大,JavaScript則在前端開發庫和框架上更勝一籌。 3)兩者的學習資源都豐富,但Python適合從官方文檔開始,JavaScript則以MDNWebDocs為佳。選擇應基於項目需求和個人興趣。

從C/C到JavaScript:所有工作方式從C/C到JavaScript:所有工作方式Apr 14, 2025 am 12:05 AM

從C/C 轉向JavaScript需要適應動態類型、垃圾回收和異步編程等特點。 1)C/C 是靜態類型語言,需手動管理內存,而JavaScript是動態類型,垃圾回收自動處理。 2)C/C 需編譯成機器碼,JavaScript則為解釋型語言。 3)JavaScript引入閉包、原型鍊和Promise等概念,增強了靈活性和異步編程能力。

JavaScript引擎:比較實施JavaScript引擎:比較實施Apr 13, 2025 am 12:05 AM

不同JavaScript引擎在解析和執行JavaScript代碼時,效果會有所不同,因為每個引擎的實現原理和優化策略各有差異。 1.詞法分析:將源碼轉換為詞法單元。 2.語法分析:生成抽象語法樹。 3.優化和編譯:通過JIT編譯器生成機器碼。 4.執行:運行機器碼。 V8引擎通過即時編譯和隱藏類優化,SpiderMonkey使用類型推斷系統,導致在相同代碼上的性能表現不同。

超越瀏覽器:現實世界中的JavaScript超越瀏覽器:現實世界中的JavaScriptApr 12, 2025 am 12:06 AM

JavaScript在現實世界中的應用包括服務器端編程、移動應用開發和物聯網控制:1.通過Node.js實現服務器端編程,適用於高並發請求處理。 2.通過ReactNative進行移動應用開發,支持跨平台部署。 3.通過Johnny-Five庫用於物聯網設備控制,適用於硬件交互。

使用Next.js(後端集成)構建多租戶SaaS應用程序使用Next.js(後端集成)構建多租戶SaaS應用程序Apr 11, 2025 am 08:23 AM

我使用您的日常技術工具構建了功能性的多租戶SaaS應用程序(一個Edtech應用程序),您可以做同樣的事情。 首先,什麼是多租戶SaaS應用程序? 多租戶SaaS應用程序可讓您從唱歌中為多個客戶提供服務

如何使用Next.js(前端集成)構建多租戶SaaS應用程序如何使用Next.js(前端集成)構建多租戶SaaS應用程序Apr 11, 2025 am 08:22 AM

本文展示了與許可證確保的後端的前端集成,並使用Next.js構建功能性Edtech SaaS應用程序。 前端獲取用戶權限以控制UI的可見性並確保API要求遵守角色庫

JavaScript:探索網絡語言的多功能性JavaScript:探索網絡語言的多功能性Apr 11, 2025 am 12:01 AM

JavaScript是現代Web開發的核心語言,因其多樣性和靈活性而廣泛應用。 1)前端開發:通過DOM操作和現代框架(如React、Vue.js、Angular)構建動態網頁和單頁面應用。 2)服務器端開發:Node.js利用非阻塞I/O模型處理高並發和實時應用。 3)移動和桌面應用開發:通過ReactNative和Electron實現跨平台開發,提高開發效率。

JavaScript的演變:當前的趨勢和未來前景JavaScript的演變:當前的趨勢和未來前景Apr 10, 2025 am 09:33 AM

JavaScript的最新趨勢包括TypeScript的崛起、現代框架和庫的流行以及WebAssembly的應用。未來前景涵蓋更強大的類型系統、服務器端JavaScript的發展、人工智能和機器學習的擴展以及物聯網和邊緣計算的潛力。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
4 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中