我当前有以下正则表达式接受任何七位数的数值
^\d{7}
如何改进它以便接受七位或十位数字?
通过:0123456,1234567,0123456789,123467890
失败:123456,12345678,123456789
一个简单的解决方案是:
^\d{7}(\d{3})?$
Run Code Online (Sandbox Code Playgroud)
此解决方案至少需要注意两件事:
\d可能比您想要的更多(例如,其他非拉丁语言中的数字的外来字符).(?: ... ).因此,出于这些原因,您可能希望使用此稍长的表达式:
^[0-9]{7}(?:[0-9]{3})?$
Run Code Online (Sandbox Code Playgroud)
这是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);
}
Run Code Online (Sandbox Code Playgroud)
结果:
0: False 1: False 2: False 3: False 4: False 5: False 6: False 7: True 8: False 9: False 10: True 11: False