不包含验证其实是一种否定验证。在此,它指验证英文单词中不存在指定的字母或者字符串。如验证英文单词中不存在字母A、验证英文单词中字母A之后不能为字母B等。
注意:本小节中介绍的英文单词由大写英文字母构成,不考虑小写英文字母。
1.不包含指定字母的验证
在此,不妨设被指定的不包含的字母为A。以下正则表达式都能够验证不包含字母A的任意英文单词。
/b[B-Z]+/b (29)
/b[B-Z]{1,}/b (30)
若被指定的不包含的字母为H。以下正则表达式都能够验证不包含字母H的任意英文单词。
/b[A-GI-Z]+/b (31)
/b[A-GI-Z]{1,}/b (32)
不包含指定字母的验证实际上从由字母表(A~Z)组成的字符类中排除被指定的不包含的字母。如果被指定的不包含的字母为C、G、I,那么排除字母C、G、I的字符类为“[A-BD-FHJ-Z]”。因此,以下正则表达式都能够验证不包含字母C、G、I的任意英文单词。
/b[A-BD-FHJ-Z]+/b (33)
/b[A-BD-FHJ-Z]{1,}/b (34)
2.字母A之后不能为字母B类型的英文单词验证
该类型的验证也是一种否定验证,它是指验证英文单词中的某一个字母之后不能为另外一个指定的字母。在此,不妨设字母B之后不能为字母P。以下正则表达式都能够简单验证字母B之后不能为字母P的任意英文单词。
/b[A-Z]*B[^P][A-Z]*/b (35)
/b[A-Z]{0,}B[^P][A-Z]{0,}/b (36)
正则表达式(35)解释:
/b匹配英文单词的边界,即英文单词的开始位置或结束位置。
[A-Z]*可以匹配空字符串,或者匹配最小长度为1的、由大写英文字母组成的字符串。
B匹配字母B。
[^P]匹配除字母P之外的任意字符。
使用工具Regex Tester分别测试正则表达式(35)和(36),结果分别如图4.7和4.8所示。
