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

时间:2019-03-13 01:47:09

标签: java regex regex-negation

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

  • 以4个大写字母开头
  • 后跟12个字母数字字符
  • 任何时候都不能包含字符01L

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

样本数据:

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

1 个答案:

答案 0 :(得分:1)

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

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

Demo

否定的前瞻(?!.*[01L])表示断言[01L]不在字符串中的任何地方。