基于以下内容匹配的正则表达式
- 最少 12 个字符或最多 13 个字符
- 可以有前导空格/零
- 字符串中没有空格
-
并非所有零/空格
-
正确匹配:《阿克德吉吉》"ABCDEFGHIJKLM"
- 错误匹配:"ABCD IJKL"
你是说整个字符串必须有 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]+$
您可以使用此正则表达式:
^ *[A-Za-z0-9]{12,13}$
s*b[a-zA-Z0-9]{12,13}b
这不需要字符串位于其自己的行上。如果您实际上并不关心匹配初始空格,则可以摆脱s*
您只需要可选的前导空格:
s*[A-Za-z0-9]{12}