あなたが過制限ユーザ名に使用される電子メールをするようです。基本的な電子メールのパターンは\[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*\\.)
を使用します。
優秀な回答!! –
https://regex101.com/サイトをリンクしていただきありがとうございます。それは私に多くの助け:) –