2017-05-24 8 views
2

ユーザー名正規表現は、少なくとも8文字の長さの文字列でなければなりません。この文字列には、@記号、ピリオド、数字があります。私はいくつかの有効で無効なテストケースを以下に示します。どうすればこれを達成できますか?ユーザー名RegEx Swift

有効:

[email protected] 
adminuser1 
[email protected] 

無効:

[email protected] 
1adminuser1 

現在、私は持っている:

let usernameRegex = "\\A\\w{6,30}\\z" 

答えて

3

あなたが過制限ユーザ名に使用される電子メールをするようです。基本的な電子メールのパターンは\[email protected]\S+\.\S+で、電子メールのようなものに似ていますが、ユーザ名に数字を使用してドメインの部分に2つのドットを含めることはできません。これらの仮定で

は、

"^(?=\\S{8})[a-zA-Z]\\w*(?:\\.\\w+)*(?:@\\w+\\.\\w{2,4})?$" 

the regex demoを参照してくださいとあなたのパターンを "修正" する方法があります。ここでは、

  • ^ - 文字列
  • (?=\\S{8})の開始 - 文字列が右側の文字列の後、少なくとも8非ホワイトスペース文字が含まれている必要があり
  • [a-zA-Z]を開始 - ASCII文字
  • \\w* - 1+ワード文字
  • (?:\\.\\w+)*から.の0+配列は1+単語文字
  • (?:@\\w+\\.\\w{2,4})?と続きます - n個の任意配列:
    • @から@シンボル
    • \\w+ - ドット
    • \\w{2,4} - - 2、3または4ワード文字
  • $ 1+ワード
  • \\.を文字 - 文字列の終わり。

非常に一般的な正規表現では、文字/数字またはアンダースコア以外にも多くの文字を使用できますが、"^(?=\\S{8})(?!\\S*@\\S*\\.\\S*\\.)[a-zA-Z]\\S*(?:@\\S+\\.\\S+)?$"となります。これは\S(空白以外の文字)の使用法では上記と異なり、@の後ろに2つのドットがあれば一致しないネガティブ先読み(?!\\S*@\\S*\\.\\S*\\.)を使用します。

+2

優秀な回答!! –

+1

https://regex101.com/サイトをリンクしていただきありがとうございます。それは私に多くの助け:) –

関連する問題