我当前有以下正则表达式来接受任何七位数的数值
^\d{7}
如何改进它以便接受七位或十位数字?
通行证:0123456,1234567,0123456789,123467890
失败:123456,12345678,123456789
答案 0 :(得分:5)
一个简单的解决方案就是:
^\d{7}(\d{3})?$
此解决方案至少需要注意两件事:
\d
可能比您预期的要多得多(例如,其他非拉丁语言中的数字的外来字符)。(?: ... )
来解决此问题。因此,出于这些原因,您可能希望使用这个稍长的表达式:
^[0-9]{7}(?:[0-9]{3})?$
这是C#中的一个小测试平台,以便您可以看到它的工作原理:
for (int i = 0; i < 12; ++i)
{
string input = new string('0', i);
bool isMatch = Regex.IsMatch(input, "^[0-9]{7}(?:[0-9]{3})?$");
Console.WriteLine(i.ToString().PadLeft(2) + ": " + isMatch);
}
结果:
0: False 1: False 2: False 3: False 4: False 5: False 6: False 7: True 8: False 9: False 10: True 11: False
答案 1 :(得分:3)
答案 2 :(得分:2)
为什么不对你要找的东西进行字面解释:
^\d{7}|\d{10}$