阿富汗电话号码的正则表达式验证

3

我希望我的用户只能以阿富汗国际号码格式输入937XXXXXXXX的电话号码。

到目前为止,我已经编写了以下代码,但它并不像我想要的那样工作:

Private Function Valid_Contact_No(ByVal Contact_No As String, ByRef errorMessage As String) As Boolean
    Dim regex As New System.Text.RegularExpressions.Regex("^[937][0-9]{1,11}$")
    ' Confirm there is text in the control.
    If txtContact_no.Text.Length = 0 Then
        errorMessage = "Contact No# is required (allowed format: 937XXXXXXXX)"
        Return False
    End If
    If txtContact_no.Text.Length > 11 Then
        errorMessage = "Contact_No Can not be more than 11 digits (allowed format: 937XXXXXXXX)"
        Return False
    End If
    If (regex.IsMatch(txtContact_no.Text)) Then
        errorMessage = ""
        Return True
    End If
    errorMessage = "A valid Contact No# is required" + ControlChars.Cr
    Return False
End Function

任何帮助都将不胜感激 :)
4个回答

2

937代码应该放在括号外面:

"^937[0-9]{0,11}$|7[0-9]{0,9}$"

括号内的内容是字符集,但你希望以 937 作为前缀。

在正则表达式中,需要用管道符 (|) 进行选择。

关于字符串长度,需要对正则表达式进行两次匹配,并检查每个匹配的字符串长度。


@farhan Anam,我刚想起来要么在937前缀,要么只有7!怎么做? - Hashmatullah Noorzai
@Farhan Anam,7个两位数字将被省略,如"^937[0-9]{1,11}$|7[0-9]{1,9}$"。我已经这样做了,但它仍然接受11位数!如何解决? - Hashmatullah Noorzai

0

我正在使用jQuery,下面的表达式适用于+93009307

$.validator.addMethod("chkMobile", function () {
                return /((\+*)93|0093)?0?7[0-9]{8}/.test(this.value);                
            },"Mobile number is not valid.");
            });

0

0
这是一个适用于以下任何电话号码的有效正则表达式:/(+93|0093)?0?7[0-9]{8}/
+937XXXXXXXX

+9307XXXXXXXX

07XXXXXXXX

7XXXXXXXX

00937XXXXXXXX

009307XXXXXXXX

这是一个适用于以下任何电话号码的有效正则表达式:

/(+93)?0?7[0-9]{8}/

+937XXXXXXXX

+9307XXXXXXXX

 07XXXXXXXX

 7XXXXXXXX

这是一个适用于以下任何电话号码的有效正则表达式:/+937[0-9]{8}/
+937XXXXXXXX

这是一个适用于以下任何电话号码的有效正则表达式:/(\0093)?7[0-9]{8}/
00937XXXXXXXX

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接