匹配字符串,文本之间没有空格,但可能有前导空格/零

时间:2013-11-14 12:27:17

标签: regex abap

基于以下

匹配的正则表达式
  • 最少12或最多13个字符
  • 可以有前导空格/零
  • 字符串
  • 中没有空格
  • 并非所有零/空格

  • 正确匹配: " ABCDEFGHIJ" " ABCDEFGHIJKLM"

  • 错误比赛: " ABCD IJKL"

4 个答案:

答案 0 :(得分:0)

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

^ *[A-Za-z0-9]{12,13}$

答案 1 :(得分:0)

\s*\b[a-zA-Z0-9]{12,13}\b

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

答案 2 :(得分: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]+$

答案 3 :(得分:-1)

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

\s*[A-Za-z0-9]{12}