基于以下匹配的正则表达式
- 最少 12 个或最多 13 个字符
- 可以有前导空格/零
- 字符串中没有空格
并非所有零/空格
正确匹配:“ABCDEFGHIJ”“ABCDEFGHIJKLM”
- 错误匹配:“ABCD IJKL”
您可以使用此正则表达式:
^ *[A-Za-z0-9]{12,13}$
\s*\b[a-zA-Z0-9]{12,13}\b
这不要求字符串在自己的行上。如果您实际上并不关心匹配初始空格,则可以摆脱\s*
你是说整个字符串必须是 12 或 13 个字符长,包括前导空格?这适用于大多数正则表达式风格:
^(?=.{12,13}$)\s*[A-Za-z0-9]+$
不过我不确定ABAP。我发现的许多搜索结果表明它支持前瞻,但如果你真的使用 POSIX 标准正则表达式,这将不起作用。您可能必须在单独的测试中进行长度检查。
更新:为了防止全零匹配,您需要添加另一个前瞻:
^(?=.{12,13}$)(?!0+$)\s*[A-Za-z0-9]+$
更新 2:我刚刚想到你可能不想要这样的字符串" 000000000"
- 即全零加上前导空格。此正则表达式将涵盖:
^(?=.{12,13}$)(?!\s*0+$)\s*[A-Za-z0-9]+$
您只需要可选的前导空格:
\s*[A-Za-z0-9]{12}