从正则表达式中排除字符集

Exclude set of characters from regular expression

我正在尝试提出一个正则表达式(在 Java 中)来验证给定的 String 值必须采用以下形式:

这是我目前得到的:^(?:(?![01L])[A-Z]{4}[A-Z0-9]{12}) ...但是,我仍然无法让它工作。

示例数据:

SKDNCNSK8SD30DDD
SKDNCNSK8SD31DDD
SKDNCNSK8SD3IDDD // valid
SKDNCNSK8SD3LDDD
SKDNCNSK8SD3ODDD // valid
SKDNCNSK8SD3ADDD // valid
1234567890123456

您的基本模式是正确的,但是您用来限制没有 01L 的否定前瞻是不正确的。尝试使用此版本:

^(?!.*[01L])[A-Z]{4}[A-Z0-9]{12}$

Demo

否定前瞻 (?!.*[01L]) 表示断言 [01L] 未出现在字符串中的任何位置。