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