如何编写排除范围值的正则表达式?

时间:2012-05-09 00:49:57

标签: java regex

我有:

[a-zA-Z0-9[^lL]][a-zA-Z0-9[^oO]][a-zA-Z0-9[^kK]]

我正在玩正则表达式,并希望创建一个正则表达式,它将接受除了'lok'之外的任何三个字母数字字符,无论是大写还是小写的任何组合。由于某种原因,我现在接受输入lok。我的错误在哪里?

1 个答案:

答案 0 :(得分:4)

您在l中加入了oka-zA-Z。如果你想用其他字符类来否定这些字母,你需要使用&&intersection)。

你想要的是这样的:

[a-zA-Z0-9&&[^lL]][a-zA-Z0-9&&[^oO]][a-zA-Z0-9&&[^kK]]

但是,根据您要执行的操作,您可以使用negative lookahead/lookbehind完成任务。