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

问题描述 投票:-1回答:1

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

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

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

样本数据:

SKDNCNSK8SD30DDD
SKDNCNSK8SD31DDD
SKDNCNSK8SD3IDDD // valid
SKDNCNSK8SD3LDDD
SKDNCNSK8SD3ODDD // valid
SKDNCNSK8SD3ADDD // valid
1234567890123456
java regex regex-negation
1个回答
1
投票

你的基本模式是正确的,但你用来限制没有01L的负面预测是不正确的。尝试使用此版本:

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

Demo

负向前瞻(?!.*[01L])说断言[01L]没有出现在字符串中的任何地方。

© www.soinside.com 2019 - 2024. All rights reserved.