2012-07-30 51 views
4

我需要验证一个帐号。它应该只有数字并且有9或10个字符。 我尝试这样做:正则表达式不工作,因为我需要

return Regex.IsMatch(id, "[0-9]{9,10}"); 

但这不能正常工作,因为它返回true的情况下,号码为“1234567890blah”。 你能帮忙,因为我用正则表达式不好吗?

谢谢。

回答

8

您需要指出的数字必须是整个字符串。在开始处放^以指示它必须是字符串的开始,并且表示它必须是结束的。

return Regex.IsMatch(id, "^[0-9]{9,10}$"); 

请参阅Regular Expression Anchors了解更多详情。

+1

谢谢和其他人给出了正确的答案。它确实有效。 – 2012-07-30 15:20:26

4

修改使用(添加开始和结束卡拉科特,^和$卡拉科特)

return Regex.IsMatch(id, "^[0-9]{9,10}$"); 
2

这是正则表达式的问题。有更简单和更清晰的解决方案。

string acct = "1234567890"; 
long temp; 

return (acct.Length == 9 || acct.Length == 10) 
    && long.TryParse(acct, out temp); 
+2

这不是“正则表达式的问题”,它的正则表达式使用不正确。正则表达式是一个非常精确的工具。 – 2012-07-30 15:24:17