我是c#中使用正则表达式的新手,我正在尝试用这种格式来验证电话号码09oxoxxxxxx其中x可以是任意数字,o只能是1-9,总长度应该是11个数字。这就是我认为可能是错误的。
if (Regex.IsMatch("09203041152", "^[0]{1}[9]{1}[1-9]{2}[1-9]{1}[0-9]{6}"))
答案 0 :(得分:2)
您可以使用代表任意数字\d
的简写字符[0-9]
:
Regex.IsMatch("09203041152", @"^09[1-9]\d[1-9]\d{6}$")
由于此处重复计数{2}
,您的模式无效:
^[0]{1}[9]{1}
的 [1-9] {2} 强>[1-9]{1}[0-9]{6}
这需要连续两个非零数字。但是在这个地方你需要一个非零数字和一个任意数字:
^[0]{1}[9]{1}
的 [1-9] {1} [0-9] {1} 强>[1-9]{1}[0-9]{6}
注意 - 您不需要指定等于{1}
的重复计数,因为这意味着单个令牌出现,如果没有明确指定,则为true。
答案 1 :(得分:1)
你的正则表达式需要更加复杂:
^09[1-9][0-9][1-9][0-9]{6}$
^
:匹配行首。09
:匹配0
后跟0
的数字。[1-9]
:匹配1
和9
之间的任何数字。[0-9]
:匹配0
和9
之间的任何数字。[1-9]
:再次匹配1
和9
之间的任何数字。[0-9]{6}
:匹配0
和9
之间的任意数字六次。11
。答案 2 :(得分:1)
以下RegExp应与您声明的格式“09oxoxxxxxx”
相匹配^09[1-9][0-9][1-9][0-9]{6}$
答案 3 :(得分:0)
试试这个:
^09[1-9][0-9][1-9][0-9]{6}