2016-11-25 39 views
1

我嘗試使用下面的正則表達式日本的電話號碼

var pattern= /^[0-9-]{10,13}$/i; 

應該允許驗證日本的電話號碼正則表達式只以下格式

  • 123-456 -7890
  • 12-3456-7890
  • 123-4567-8901

但是當我嘗試它返回true

var phone_pattern = /^[0-9-]{10,13}$/i; 
 
var value='-----------'; 
 
alert(phone_pattern.test(value));

+0

您可以從字面上在谷歌第一主打爲「日本的電話號碼正則表達式」 –

+0

讓你的答案,你的問題是,10個破折號根據您正則表達式 – mplungjan

+0

好了,從https的正則表達式允許的://要點.github.com/terrancesnyder/1345094和http://www.devcurry.com/2010/03/regular-expression-for-phone-numbers.html不適用於OP中的樣本編號。但是,日本電話號碼的規則不明確,請在問題中說明。 –

回答

5

如果你希望它是很容易理解我只用4種可能的模式的交替:

^(?:\d{10}|\d{3}-\d{3}-\d{4}|\d{2}-\d{4}-\d{4}|\d{3}-\d{4}-\d{4})$ 

這一次在50步根據regex101符合你的4個電話號碼。

如果你希望它是在可讀性的成本多一點效率,你可以因式分解它:

^\d{2}(?:-\d{4}-\d{4}|\d{8}|\d-\d{3,4}-\d{4})$ 

這一個你4個電話號碼在48步根據regex101匹配。

+0

Aaron,我幾乎可以肯定OP正在測試獨立的字符串,而模式周圍的'^'/'$'是必須的。 –

+0

你最可能是正確的,我已經添加了錨 – Aaron

+0

好,但'^(:\ d {2}(: - ?\ d {4} - \ d {4} | \ d {8} | \ d- \ d {3,4} - \ d {4}))$'包含冗餘的外部非分組:)無論如何,這將工作。 –

0

此代碼支持您! https://regex101.com/r/9ePPzz/1

^(([0-9]{10}$)|([0-9]{3}-[0-9]{3}-[0-9]{4}$)|([0-9]{2}-[0-9]{4}-[0-9]{4}$)|([0-9]{3}-[0-9]{4}-[0-9]{4}$)) 
-1

日本的電話號碼總是以零開頭。 正則表達式應該以^0開頭。 這適用於日本的固定號碼。

^0([1-9]{1}-?[1-9]\d{3}|[1-9]{2}-?\d{3}|[1-9]{2}\d{1}-?\d{2}|[1-9]{2}\d{2}-?\d{1})-?\d{4}$ 

請看這裏詳細。 https://github.com/sakatam/a-better-jp-phone-regex