簡體   English   中英

ASP.NET Regex驗證手機號碼

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM