我想用这个来验证商业防火墙 --> 长度为 7 到 12 个字符,第 4、6 个和第 10 个字符是其中之一:1、5、9、A、S、K
^[a-zA-Z0-9]{7-12}$
你可以使用这个正则表达式,
^.{3}[159ASK].[159ASK].(?:..[159ASK].{0,2}|.{0,2})$
以 ^
开头的字符串然后允许任何三个字符与 .{3}
然后根据需要,第 4 个字符是[159ASK]
中的任何字符,然后.
将任何字符表示为第 5 个字符,然后第六个字符再次由 [159ASK]
表示,然后.
允许任何字符作为第七个字符,最后(?:..[159ASK].{0,2}|.{0,2})
这表示两个字符中的任何一个,或者如果它们至少是 10 个字符,则第 10 个字符是再次来自[159ASK]
您可以使用@Pushpesh提供的解决方案,但如果您进一步想减少解决方案的长度,则可以使用
^.{3}([159ASK].)1(?:..1{0,2}|.{0,2})$
其中 \1 是一个反向引用,表示第一个捕获组的值 [159ASK]。
?:表示非捕获组
您可以进一步阅读
捕获/非捕获组和返回引用