【问题标题】:Exclude set of characters from regular expression从正则表达式中排除字符集
【发布时间】:2019-08-03 14:45:44
【问题描述】:

我正在尝试提出一个正则表达式(在 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】:

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

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

    Demo

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

    【讨论】:

    • 令人印象深刻...这很快!谢谢!
    猜你喜欢
    • 1970-01-01
    • 2021-09-16
    • 1970-01-01
    • 1970-01-01
    • 2011-05-05
    • 2015-01-28
    • 1970-01-01
    • 2017-04-13
    相关资源
    最近更新 更多