我正在尝试使用以下正则表达式验证日本电话号码
var pattern= /^[0-9-]{10,13}$/i;
它应该只允许以下格式
但是,当我尝试它返回真实时
var phone_pattern = /^[0-9-]{10,13}$/i;
var value='-----------';
alert(phone_pattern.test(value));
答案 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}$