2013-11-14 19 views

回答

0

你是說整個字符串必須是12或13個字符長包括領先的空白?這將在最正則表達式的口味工作:

^(?=.{12,13}$)\s*[A-Za-z0-9]+$ 

我不知道ABAP雖然。我發現的許多搜索結果都表明它支持lookahead,但如果你真的使用POSIX標準regexes,這將不起作用。您可能必須在單獨的測試中進行長度檢查。

UPDATE:爲了防止比賽全零的,你需要添加其他前瞻:

^(?=.{12,13}$)(?!0+$)\s*[A-Za-z0-9]+$ 

更新2:它只是發生在我身上,你可能不希望字符串像" 000000000" - 即全零加上領先空格。此正則表達式將涵蓋:

^(?=.{12,13}$)(?!\s*0+$)\s*[A-Za-z0-9]+$ 
+0

它不會匹配所有空格,因爲'[A-Za-z0-9] +'必須至少匹配一個字母或數字。有關其他要求,請參閱我的更新。 –

0

你可以使用這個表達式:

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

謝謝,但我只允許一個領先空間,它應該允許多個領先空間。 「ABCDEFGH」 – user2991913

+0

@ user2991913:你確定它只允許1個空格。我有'^ *'這意味着0或礦石領先空間。 – anubhava

+0

是的,它只允許一個 – user2991913

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

這並不需要串上它自己的路線。如果你不真正關心你可以擺脫最初的空白匹配\s*

+0

如果你匹配的字符串是在他們自己的行上,那麼@ anubhava的答案就是你想要的。 – OGHaza

-1

你只是想可選前導空格:

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

他在Anubhava的回答中特別表示,它不限於一個領先空間。 – Tobberoth

+0

@Tobberoth只是爲了閱讀這個問題而傻了我。將'?'更改爲'*'。 – Bohemian

+0

這使得它成爲先前答案的副本,這些答案甚至在第一個地方都不正確。 – Tobberoth

相關問題