我使用Clickatell向客户手机发送短信。
是否有一个标准化的正则表达式适用于所有有效的手机号码,例如:+27 123 4567?我可以自己编写一个,但我担心会错过一些不常见但是合法的电话号码格式。
我使用Clickatell向客户手机发送短信。
是否有一个标准化的正则表达式适用于所有有效的手机号码,例如:+27 123 4567?我可以自己编写一个,但我担心会错过一些不常见但是合法的电话号码格式。
从您的输入中除了 '+' 和数字之外,应该这样做:
^\+[1-9]{1}[0-9]{3,14}$
如果您想更准确地了解国际电话代码,请查看电话号码国际代码列表中的这个问题。
然而,我会尽量不太严格地验证。如果告诉用户他们的有效号码不可接受,那么他们会感到非常沮丧。
^\+[1-9]{1}[0-9]{1,14}$
。 - Sergei^([0|\+[0-9]{1,5})?([0-9]{10})$
也适用于任何以 +
或任何其他数字开头的普通电话号码。 - sohaiby^\+[1-9]{1}[0-9]{7,11}$
^\+[1-9]{1}[0-9]{7,11}$
无法匹配长度小于8位的有效号码,例如"+290 8000"。最长的号码可能是由3位国家代码、3位区号和8位用户号码组成的14位数字。为了解决这个问题,可以使用正则表达式^\+[1-9]{1}[0-9]{6,12}$
,其中{6,12}表示号码长度在7到13之间。在这里为那些未来寻找相关信息的用户发布一条注记。Google的libphonenumber
是您最可能想要使用的内容。有PHP、node.js、Java等语言的包装器可以使用Google一直在收集的数据,从而减少了维护大量正则表达式模式数组的要求。
/^(\+|\d)[0-9]{7,16}$/;
你可以使用以“00”开头的国际号码。
我为什么更喜欢使用15位数字:http://en.wikipedia.org/wiki/E.164
// 正则表达式 - 检查新加坡有效的手机号码
public static boolean isSingaporeMobileNo(String str) {
Pattern mobNO = Pattern.compile("^(((0|((\\+)?65([- ])?))|((\\((\\+)?65\\)([- ])?)))?[8-9]\\d{7})?$");
Matcher matcher = mobNO.matcher(str);
if (matcher.find()) {
return true;
} else {
return false;
}
}