我在一些网站上找到了这个代码,它工作得很完美。它验证电话号码是以下格式之一: (123) 456-7890或123-456-7890
问题是我的客户端(我不知道为什么,可能是客户端)想要添加另一种格式,连续的十个数字,像这样:1234567890。
我用这个正则表达式,
/^(\()?\d{3}(\))?(-|\s)?\d{3}(-|\s)\d{4}$/
我如何添加它也验证另一种格式?我不擅长使用正则表达式。
我在一些网站上找到了这个代码,它工作得很完美。它验证电话号码是以下格式之一: (123) 456-7890或123-456-7890
问题是我的客户端(我不知道为什么,可能是客户端)想要添加另一种格式,连续的十个数字,像这样:1234567890。
我用这个正则表达式,
/^(\()?\d{3}(\))?(-|\s)?\d{3}(-|\s)\d{4}$/
我如何添加它也验证另一种格式?我不擅长使用正则表达式。
当前回答
验证电话号码+返回格式化数据
函数有效电话(str){ str = str.replace(/[^0-9]/g, ''); var l = 尺寸长度; if(l<10) 返回 ['错误', '电话号码长度< 10']; var tel = '', num = str.substr(-7), 代码 = str.substr(-10, 3), coCode = ''; if(l>10) { coCode = '+' + str.substr(0, (l-10) ); } tel = coCode +' ('+ code +') '+ num; 返回 [“成功”,电话]; } console.log(validTel('+1 [223] 123.45.67'));
其他回答
我不得不承认,核实电话号码是一项艰巨的任务。 至于这个具体的问题,我会改变正则表达式从
/^(()?\d{3}())?(-|\s)?\d{3}(-|\s)\d{4}$/
to
/^(()?\d{3}())?(-|\s)?\d{3}(-|\s)?\d{4}$/
因为唯一多余的元素是最后的破折号/空格。
除了数字,什么都不用管。
以下是我使用的方法:
// USA phones should contain at least 10 digits. For Ukrainian phones it's OK to have only 9 digits, without leading 0 and country code prefix: [+380] 88 888-88-88.
String.prototype.isValidPhone = function(digitsCount) {
var str = this.trim().match(/\d/g);
return str && str.length >= (digitsCount || 10); // default is at least 10 digits
}
这是可行的:
/^(()?\d{3}())?(-|\s)?\d{3}(-|\s)?\d{4}$/
的吗?字符表示前一组匹配0次或1次。组(-|\s)将匹配-或|字符。添加?在正则表达式中第二次出现此组后,允许您匹配10个连续数字的序列。
我使用了@marty提供的一个,并对它进行了一些修改,以适应更多的情况:
/^[\+]?([0-9][\s]?|[0-9]?)([(][0-9]{3}[)][\s]?|[0-9]{3}[-\s\.]?)[0-9]{3}[-\s\.]?[0-9]{4,6}$/im
有效的格式:
+1 123 4567890 + 11234567890 + 1 (123)4567890 + 1 (123)456-7890 +1 (123) 456-7890 +1 (123)456 7890 +1 123 456-7890 +1 123 456 7890 +1 123-456-7890 The 123-456-7890 123 456-7890 123 456 7890 123 4567890 1234567890
正则表达式
使用以下Regex模式:
/^[\+]?[(]?[0-9]{3}[)]?[-\s\.]?[0-9]{3}[-\s\.]?[0-9]{4,6}$/im
这样的:<输入模式 ="/^[\+]?[(]?[ 0 - 9] {3} [)] ? [\ s \。]? [0 - 9]{3}[\ s \。]吗?[0 - 9] {4 6} $ / im”> *
有效的格式:
(123) 456-7890, (123) 456-7890, 123-456-7890, 123.456 7890。, 1234567890, + 31636363634前 075-63546725