在验证9位数字时需要帮助。
CANNOT BE
-----------
000000000
111111111
222222222
333333333
444444444
555555555
666666666
777777777
888888888
9999999994-5个位置不能为00 -- 123001234
6-9个位置不能为00 -- 234550000
这九个数字不能是连续的--但暂时只能是下面的四个数字--
012345678
123456789
987654321
098765432我刚刚完成了第一个部分--
"^(?:(?!0+|1+|2+|3+|4+))\d{9}$"非常感谢朋友们的帮助。
发布于 2011-03-18 04:11:54
我知道这并不是我所要求的,但我突然意识到,作为一个独立的方法,这会比一个正则表达式更容易。
public bool SanityCheckSSN(string ssn)
{
if(ssn == null || ssn.Length != 9) return false;
foreach (char c in ssn)
{
if (!Char.IsDigit(c)) return false;
}
if(ssn == "000000000" ||
ssn == "111111111" ||
ssn == "222222222" ||
ssn == "333333333" ||
ssn == "444444444" ||
ssn == "555555555" ||
ssn == "666666666" ||
ssn == "777777777" ||
ssn == "888888888" ||
ssn == "999999999" ||
ssn == "012345678" ||
ssn == "123456789" ||
ssn == "987654321" ||
ssn == "098765432" ||
ssn.Substring(3, 2) == "00" ||
ssn.Substring(5, 4) == "0000")
{
return false;
}
return true;
}发布于 2011-03-18 04:13:01
可能存在一个用来验证所有规则的正则表达式,但是如果您为每个条件编写一个验证规则(可以是一个正则表达式),那么它将更加容易、可读和可维护。
作为一个更一般的注释,正则表达式通常可以很好地检查字符串是什么,但当涉及到检查字符串是什么和不是什么时,它们就不那么好了。
发布于 2011-03-18 04:21:10
如果必须是正则表达式(以详细形式编写):
^ # start of string
(?!(.)\1+$) # not all characters the same
(?!...00) # pos 4/5 not zero
(?!.....0000) # pos 6-9 not zero
(?!012345678) # list of disallowed numbers
(?!123456789)
(?!987654321)
(?!098765432)
[0-9]{9} # match 9 digits exactly
$ # end of stringhttps://stackoverflow.com/questions/5344537
复制相似问题