C# 红外手机号码的正则表达式
我将使用正则表达式验证IR手机号码,但它不匹配!例如“09126104851”。 有什么问题C# 红外手机号码的正则表达式,c#,regex,C#,Regex,我将使用正则表达式验证IR手机号码,但它不匹配!例如“09126104851”。 有什么问题 "^09[123456789]{2}(^0[123456789]{1}[0-9]{6}|[123456789]{1}[0-9]{7})$" 请改用此正则表达式:“^09\d{9}$” 例如: System.Text.RegularExpressions.Regex.IsMatch("09126104851", @"^09\d{9}$") 检查小提琴:< P>因为正则表达式的中间有 ^ < /代码>符
"^09[123456789]{2}(^0[123456789]{1}[0-9]{6}|[123456789]{1}[0-9]{7})$"
请改用此正则表达式:
“^09\d{9}$”
例如:
System.Text.RegularExpressions.Regex.IsMatch("09126104851", @"^09\d{9}$")
检查小提琴:
< P>因为正则表达式的中间有<代码> ^ < /代码>符号。^
表示“在字符串的开头”。
您需要@msd:
^09\d{9}$
中的正则表达式,您的表达式等价于:
^09[1-9]{2}(^0[1-9]{1}[0-9]{6}|[1-9]{1}[0-9]{7})$
也可以写得更短,如:
^09[1-9]{2}(^0[1-9]{1}\d{6}|[1-9]{1}\d{7})$
现在你中间的错误是<代码> ^ 0 < /代码>。可能您想要
[^0]
(所有内容都不是零):
但最大的问题是这一部分:
共匹配4位数字09[1-9]{2}
共匹配8位数字[^0][1-9]{1}\d{6}
总共匹配8位数字[1-9]{1}\d{7}
^09[1-9]{2}([1-9]{1}\d{6}|[1-9]{1}\d{6})$
现在您将注意到,|
前后的交替匹配是
相同的!这使得表达式变得更小:
^09[1-9]{2}([1-9]{1}\d{6})$
如果我们可以忽略最后7位的分组,我们将注意到类似的部分:
[1-9]{2}
和[1-9]{1}
。这样可以进一步减少表达式:
^09[1-9]{3}\d{6}$
为什么你有<代码> ^ ,字符串的开始,在正则表达式的开头和中间?那会怎样匹配呢?
^09[1-9]{3}\d{6}$