我有一个正则表达式
"[a-z][0-9][a-z][0-9][a-z][0-9]"
从此我想要生成正则表达式,不包括字符D
,F
,I
,O
,Q
和U
。
那不应该包含"Q3D4R5"
。
我该怎么做?
答案 0 :(得分:3)
只需使用否定前瞻从字符串中排除这些字符。
(?!.*[DFIOQU])(?:[a-z][0-9]){3}
一些解释:
如果字符组中出现了某个字符, (?!.*[DFIOQU])
会检查整个字符串,如果是,那么整个字符就是False。
(?:)
定义了一个重复3次{3}
的非捕获组。
答案 1 :(得分:2)
你的正则表达式只匹配小写字符,所以我假设你要排除d,f,i,o,q和u。
您可以将原始正则表达式重写为
([a-z][0-9]){3}
这个正则表达式可以修改为
([a-ceghj-nprstv-z][0-9]){3}
实现你想要的目标
答案 2 :(得分:0)
您可以使用
[a-ceghj-nprsv-z]
而不是
[a-z]
答案 3 :(得分:0)
如果情况重要,那么过滤字母部分:
[a-zA-CEGHJ-NPRSV-Z]
这将允许任何小写字母,但不允许指定大写字母。
答案 4 :(得分:0)
如其他答案所示,您可以在suare括号中包含特定字符以及更具体的范围;假设您的正则表达式匹配不区分大小写(否则您的原始示例可能不起作用),您可以:
"[a-ceghj-nprsv-z][0-9][a-ceghj-nprsv-z][0-9][a-ceghj-nprsv-z][0-9]"
现在,如果您还想验证长度(如果您有可能存在类似“A1A1A1A”的值,并且您不希望它匹配),那么您还需要检测开始和结束表达,例如:
"^[a-ceghj-nprsv-z][0-9][a-ceghj-nprsv-z][0-9][a-ceghj-nprsv-z][0-9]$"
答案 5 :(得分:0)
我找到了这个“正则表达式编辑器”网站:http://www.rubular.com/
很有用。
答案 6 :(得分:0)
我在http://tools.netshiftmedia.com/regexlibrary/检查了以下两个案例,但它们似乎有效。
^(?! d )^(?! F。)^(?!我)^( ?! 0 )^(?!问)^(?!Ú)[AZ] [0-9 ] [AZ] [0-9] [AZ] [0-9]
[A-CE-GHJ-NPR-TV-Z] [0-9] [A-CE-GHJ-NPR-TV-Z] [0-9] [A-CE-GHJ-NPR-TV- Z] [0-9]