遇到一个愚蠢的问题。我有一个输入字段,用户可以输入有限数量的字母(ABCDEFG)。问题在于:我不希望用户能够在输入的单个子序列中包含超过3个A,C,E和G的字母,即:无AAA,CCC,EEE,GGG。第二种情况与第一种情况几乎相同:单个子序列中不超过1 B,D,F,即:无BB,DD,FF。这两条规则以某种方式组合在一起。
因此,例如,AABFGECC是有效的。 GEFFFAABG无效。
希望,你会帮助我的!谢谢!P.S如果它很重要,我正在用Visual Basic编写我的应用程序。但我认为,这不是那么重要。
答案 0 :(得分:2)
如果您创建的表达式与您要避免的情况相匹配,而是检查输入是否匹配,该怎么办?像这样:
([^A-F]|AAA|CCC|EEE|GGG|BB|DD|FF)
答案 1 :(得分:1)
虽然你可以聪明并使用反向引用,但一个简单的解决方案是使用negative look ahead对无效序列进行黑名单:
^(?!.*(?:AAA|CCC|EEE|GGG|BB|DD|FF))[A-G]*$
逻辑上,在列表中有7个无效序列是一样的,并且检查字符串不包含任何一个,这也为您提供了一个不错的选择。