Java 除某些字符和最大数字序列外的任何字母数字字符
寻找正则表达式,它将找到一个长度为12个字母数字字符的字段,但不能有大写或小写的“O”或“I”。也不能有特殊字符。一行中不能有9个或更多数字的序列。我知道我可以做^[a-hj-np-zA-hj-np-Z0-9]{12}$,但我不知道如何在一行中有9个或更多的数字时不匹配 12345678A903应该是有效的。 abcdefghj34y应该是有效的。 123456789a34应无效 abc987654321应该无效这个怎么样:Java 除某些字符和最大数字序列外的任何字母数字字符,java,regex,Java,Regex,寻找正则表达式,它将找到一个长度为12个字母数字字符的字段,但不能有大写或小写的“O”或“I”。也不能有特殊字符。一行中不能有9个或更多数字的序列。我知道我可以做^[a-hj-np-zA-hj-np-Z0-9]{12}$,但我不知道如何在一行中有9个或更多的数字时不匹配 12345678A903应该是有效的。 abcdefghj34y应该是有效的。 123456789a34应无效 abc987654321应该无效这个怎么样: ^(?!.*?\d{9,})[a-hj-np-zA-HJ-NP-Z0-
^(?!.*?\d{9,})[a-hj-np-zA-HJ-NP-Z0-9]{12}$
如所见
说明:
?!*\d{9,}在正则表达式中是一个负前瞻,它表示匹配后面不应该有零个或多个字符和9个或多个数字
您可以在此处了解有关负面外观的更多信息:
其中:
?i不区分大小写
^行首
?!.*\d{9}负向前看,确保没有9+个连续数字
[A-HJ-NP-Z0-9]{12}12字母数字,除了I和O,因为?I它也匹配小写字母
$行尾
你可以试试这种模式^*[oOiI]*\d{9,}[a-zA-Z0-9]{12}$ 说明: ^-匹配字符串的开头 *[oOiI]-负前瞻:断言字符串中没有任何字符:oOiI *\d{9,}-负前瞻:断言字符串中没有9个或更多连续数字 [a-zA-Z0-9]{12}-匹配12个字母数字字符 $-匹配字符串的结尾 加*[0-9]{9}之后^
(?i)^(?!.*\d{9})[A-HJ-NP-Z0-9]{12}$