检查特定的正则表达式,最多可以包含 3 个由字母和数字组成并用逗号分隔的键,但不仅仅是零

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

我需要帮助检查我的正则表达式。
背景:
我有一个脚本,它采用 Excel 文件作为输入来在数据库中导入产品,有一个特殊字段为产品采用“额外键”,产品可以有 3 个额外键,并且它们必须用逗号分隔。

  • 按键只能有字母和数字
  • 密钥不能只有 0,并且每个密钥最多 20 个字符

所以我为检查“额外键”字段而制作的正则表达式是

/^((?!0+,?$)(?! +,?$)[A-Z0-9 ]{1,20},?){0,3}$/

所以我稍后可以在服务器中用“,”(逗号)将其拆分,正则表达式中接受空格,因为我打算在拆分之前用空字符串替换所有空格

我的问题是,这个正则表达式可以吗?

我使用过正则表达式,但这是我第一次使用负向先行表达式。

如果不正确,你能帮我获得正确的正则表达式吗?

谢谢!

regex regex-lookarounds
1个回答
0
投票

“...我的问题是,这个正则表达式可以吗?

我使用过正则表达式,但这是我第一次使用负向先行表达式。

如果不正确,你能帮我获得正确的正则表达式吗? ...”

它工作正常,环视是正确的。
这是一个类似的模式。

(?!(?:0+| +)$)[A-Z\d ]{1,20}(?:,(?!(?:0+| +)$)[A-Z\d ]{1,20}){2}

如果您使用PCRE正则表达式引擎,您可以通过引用捕获组来简化模式。

((?!(?:0+| +)$)[A-Z\d ]{1,20})(?:,\g<1>){2}
© www.soinside.com 2019 - 2024. All rights reserved.