正则表达式生成

时间:2011-05-05 12:43:29

标签: regex

我有一个正则表达式

"[a-z][0-9][a-z][0-9][a-z][0-9]"

从此我想要生成正则表达式,不包括字符DFIOQU 。 那不应该包含"Q3D4R5"

我该怎么做?

7 个答案:

答案 0 :(得分:3)

只需使用否定前瞻从字符串中排除这些字符。

(?!.*[DFIOQU])(?:[a-z][0-9]){3}

http://www.rubular.com

一些解释:

如果字符组中出现了某个字符,

(?!.*[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]