2015-07-21 51 views
0

我需要檢查用戶登錄是否有效。它可以是電子郵件,也可以是「。」。和「 - 」符號。但它不能從這些符號開始。登錄的最小長度爲3個符號及上限爲35.我已經寫了一個正則表達式:iOS上使用正則表達式的整個字符串的最小和最大長度

NSString *loginRegex = @"(?=[A-Za-z0-9.-]{3,35})((^[^.-][A-Za-z0-9.-]+ 
@[A-Za-z0-9.-]+\\.[A-Za-z0-9.-]{2,4})|^[^.-][A-Za-z0-9.-]+)"; 

一切都很好用最小長度,但驗證最大長度失敗。請幫忙。我做錯了什麼?

+0

那是一個連續的正則表達式? – sln

+0

是的,我只是在這裏分成兩行,使更多的可讀性 –

回答

1

您需要在斷言字符類中包含@符號。
除此之外,您必須添加開始/結束字符串錨點來約束長度要求

並稱和重構,它的作品了這樣:

"^(?=[[email protected]]{3,35}$)([^.-][A-Za-z0-9.-]+(?:@[A-Za-z0-9.-]+\\.[A-Za-z0-9.-]{2,4})?)$" 

格式化:

# Raw, compressed: ^(?=[[email protected]]{3,35}$)([^.-][A-Za-z0-9.-]+(?:@[A-Za-z0-9.-]+\.[A-Za-z0-9.-]{2,4})?)$ 

^ 
(?= [[email protected]]{3,35} $) 
(       # (1 start) 
     [^.-] 
     [A-Za-z0-9.-]+ 
     (?: 
      @ 
      [A-Za-z0-9.-]+ 
      \. 
      [A-Za-z0-9.-]{2,4} 
    )? 
)        # (1 end) 
$ 
+0

謝謝你!爲我完美工作。 –

+0

不客氣。 – sln

+1

但我認爲在開始時使用「@ - 」而不是「 - @」更正確。 '(^ = [A-Za-z0-9 .-] {3,35} $)([^。 [A-Za-z0-9 .-] + \\。[A-Za-z0-9 .-] {2,4})?)$「' –

相關問題