0

基于以下匹配的正则表达式

  • 最少 12 个或最多 13 个字符
  • 可以有前导空格/零
  • 字符串中没有空格
  • 并非所有零/空格

  • 正确匹配:“ABCDEFGHIJ”“ABCDEFGHIJKLM”

  • 错误匹配:“ABCD IJKL”
4

4 回答 4

0

您可以使用此正则表达式:

^ *[A-Za-z0-9]{12,13}$
于 2013-11-14T12:29:26.447 回答
0
\s*\b[a-zA-Z0-9]{12,13}\b

这不要求字符串在自己的行上。如果您实际上并不关心匹配初始空格,则可以摆脱\s*

于 2013-11-14T12:31:45.957 回答
0

你是说整个字符串必须是 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]+$
于 2013-11-16T12:18:42.813 回答
-1

您只需要可选的前导空格:

\s*[A-Za-z0-9]{12}
于 2013-11-14T13:50:41.353 回答