[英]ASP.NET Regex to validate mobile phone number
我有一個通過短信將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}$/;
兩者都很好。
剝離所有非數字字符(也許是+除外),然后將其進行正則表達式可能更容易,然后如果需要輸出,只需重新格式化即可。
這是去除非數字字符后電話號碼的正則表達式:
^\+[1-9]{1}[0-9]{10}$
有關國家/地區代碼的更多詳細信息,請參閱此帖子 。
我認為,如果可能的話,您可能需要將正則表達式限制為目標國家/地區的手機號碼格式,或者根據不同國家/地區的手機號碼格式,以多種方式檢查輸入內容。 看起來您的正則表達式也將匹配.-
而不是“ only number and'+'”。
無論如何,在德國,我相信以下正則表達式會起作用,只允許在開頭加一個+
,然后除數字外什么也不能做:
^(?:(\+|00)(49)?)?0?1\d{2,3}\d{8}$
0?1\\d{2,3}
,要考慮到德國手機號碼可能以0
開頭或不以0
開頭,或者以1
開頭,之后是另外2個數字(在您的情況下為76)或3個數字(176 ),如果沒有前導0。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.