问候溢出者,
我正在尝试编写一个正则表达式来验证格式为##########(10 位数字)的电话号码,即这些是有效的情况:1231231234 或 1111111111。无效的情况是字符串少于 10 位或多于 10 位的数字。
到目前为止我的表达式是这样的:“\d{10}”
不幸的是,它不能正确验证字符串是否超过 11 位。
有谁知道完成这项任务的表达式?
问候溢出者,
我正在尝试编写一个正则表达式来验证格式为##########(10 位数字)的电话号码,即这些是有效的情况:1231231234 或 1111111111。无效的情况是字符串少于 10 位或多于 10 位的数字。
到目前为止我的表达式是这样的:“\d{10}”
不幸的是,它不能正确验证字符串是否超过 11 位。
有谁知道完成这项任务的表达式?
你需要使用ancors,即
/^\d{10}$/
你也需要锚定开始和结束
/^\d{10}$/
这匹配 10 位数字,仅此而已。
此表达式适用于谷歌表格 10 位电话号码,如下所示:
(123) 123 1234 或 123-123-1234 或 123123124
(\W|^)[(]{0,1}\d{3}[)]{0,1}[\s-]{0,1}\d{3}[\s-]{0,1}\d{4}(\W|$)
我包括使用破折号(xxx-xxx-xxxx)的选项以获得更好的用户体验(假设这是您的网站):
var regex = /^\d{3}-?\d{3}-?\d{4}$/g
window.alert(regex.test('1234567890'));
我通常使用
phone_number.match(/^[\(\)\s\-\+\d]{10,17}$/)
为了能够接受 12345678、1234-5678、+12 345-678-93 或 (61) 8383-3939 格式的电话号码,世界各地的人们输入电话号码并没有真正的约定。因此,如果您不必验证每个国家/地区的电话号码,这应该主要工作。17 的限制是为了阻止人们输入两个许多无用的连字符和字符。
除此之外,您可以删除所有空格、连字符和加号并计算字符以确保它是 10 或更多。
var pureNumber = phone_number.replace(/\D/g, "");
一个完整的解决方案是两者的结合
var pureNumber = phone_number.replace(/\D/g, "");
var isValid = pureNumber.length >= 10 && phone_number.match(/^[\(\)\s\-\+\d]{10,17}$/) ;
或者这个(这将从字符串中删除非数字字符)
var phoneNumber = "(07) 1234-5678";
phoneNumber = phoneNumber.replace(/\D/g,'');
if (phoneNumber.length == 10) {
alert(phoneNumber + ' contains 10 digits');
}
else {
alert(phoneNumber + ' does not contain 10 digits');
}