正则表达式为日本电话号码

时间:2016-11-25 09:39:26

标签: jquery regex

我正在尝试使用以下正则表达式验证日本电话号码

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

它应该只允许以下格式

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

但是,当我尝试它返回真实时

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

4 个答案:

答案 0 :(得分:5)

如果您希望它易于理解,我只是使用4种可能模式的替换:

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

根据regex101,这一步与您的4个电话号码相匹配,分为50个步骤。

如果您希望以可读性为代价提高效率,可以将其分解:

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

根据regex101,这一步与48个步骤中的4个电话号码相匹配。

答案 1 :(得分: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}$))

答案 2 :(得分:0)

只是想提一下,以防其他人也尝试验证日语电话号码

在日本,有许多电话号码格式不仅仅包含在问题(see Wiki for more details)

中列出的5种情况下

正则表达式mentioned here涵盖了其中的全部(或至少大部分)

换句话说,此正则表达式更全面

^(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}|0[789]0-?\d{4}-?\d{4}|050-?\d{4}-?\d{4})$

答案 3 :(得分:-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