我有一个通过 SMS 向用户发送 TAN 的应用程序。我们已经有 API 可以将 SMS 发送到手机号码。因此,我必须确保它是正确的手机号码。下面是我的正则表达式:
function validateMobile(str) {
var filter = /^\+?(\d[\d-. ]+)?(\([\d-. ]+\))?[\d-. ]+\d$/;
if (!filter.test(str)) {
alert('Please provide a valid mobile phone number');
return false;
}
return true;
}
它不接受字符,只允许数字和“+”。用户可以输入,例如 +49176xxxxxxxx 或 0176xxxxxxxx(没有特定的国家代码)
但是这个正则表达式存在严重缺陷。用户可以输入任何数字,例如 1324567982548,这个正则表达式也返回 true。我想过检查文本框的长度,它暂时可以工作,但这仍然不是一个合适的解决方案。
有没有其他更好的正则表达式或方法来检查更具体的手机号码?
提前致谢。
解决了
我用一个新的正则表达式解决了这个问题:
var filter = /^(\+49\d{8,18}|0\d{9,18})((,\+49\d{8,18})|(,0\d{9,18}))*$/;
或如下 mzmm56 建议:
var filter = /^(?:(\+|00)(49)?)?0?1\d{2,3}\d{8}$/;
两者都一样好。