用户名正则表达式 Swift
Username RegEx Swift
用户名正则表达式应该是至少 8 个字符长的任何字符串。此字符串中可以有@符号、句点、数字或没有。我在下面放了一些有效和无效的测试用例。我怎样才能做到这一点?
有效:
user@user.com
adminuser1
user.user@user.com
无效:
user@user.user.com
1adminuser1
目前我有:
let usernameRegex = "\A\w{6,30}\z"
您似乎过度限制了用户名中使用的电子邮件地址。一个基本的电子邮件模式是 \S+@\S+\.\S+
,它与电子邮件类似,但您似乎不想让用户名以数字开头,并且域部分不能包含 2 个点。
根据这些假设,有一种方法可以 "fix" 您的模式作为
"^(?=\S{8})[a-zA-Z]\w*(?:\.\w+)*(?:@\w+\.\w{2,4})?$"
参见 the regex demo。在这里,
^
- 字符串开头
(?=\S{8})
- 字符串应在字符串开始后立即包含至少 8 个非 whitepsace 字符
[a-zA-Z]
- 一个 ASCII 字母
\w*
- 1+ 个单词字符
(?:\.\w+)*
- .
的 0+ 个序列后跟 1+ 个单词字符
(?:@\w+\.\w{2,4})?
- 一个可选的序列:
@
- @
符号
\w+
- 1+ 个单词字符
\.
- 一个点
\w{2,4}
- 2、3 或 4 个单词字符
$
- 字符串结尾。
一个非常通用的正则表达式允许更多的字符而不仅仅是 letters/digits 或下划线将是 "^(?=\S{8})(?!\S*@\S*\.\S*\.)[a-zA-Z]\S*(?:@\S+\.\S+)?$"
。它与上面 \S
(任何非空白字符)的用法不同,并且只使用否定前瞻 (?!\S*@\S*\.\S*\.)
如果在 @
之后的任何地方有 2 个点,则匹配失败。 =31=]
此表达式验证第一个字母类型的用户名,然后它可能有也可能没有数字,然后它可能有也可能没有 '.' 类型的字符。或 '_' 然后你可以有字母或数字
[a-z]+[0-9]*[_.-]?[a-z0-9]
用户名正则表达式应该是至少 8 个字符长的任何字符串。此字符串中可以有@符号、句点、数字或没有。我在下面放了一些有效和无效的测试用例。我怎样才能做到这一点?
有效:
user@user.com
adminuser1
user.user@user.com
无效:
user@user.user.com
1adminuser1
目前我有:
let usernameRegex = "\A\w{6,30}\z"
您似乎过度限制了用户名中使用的电子邮件地址。一个基本的电子邮件模式是 \S+@\S+\.\S+
,它与电子邮件类似,但您似乎不想让用户名以数字开头,并且域部分不能包含 2 个点。
根据这些假设,有一种方法可以 "fix" 您的模式作为
"^(?=\S{8})[a-zA-Z]\w*(?:\.\w+)*(?:@\w+\.\w{2,4})?$"
参见 the regex demo。在这里,
^
- 字符串开头(?=\S{8})
- 字符串应在字符串开始后立即包含至少 8 个非 whitepsace 字符[a-zA-Z]
- 一个 ASCII 字母\w*
- 1+ 个单词字符(?:\.\w+)*
-.
的 0+ 个序列后跟 1+ 个单词字符(?:@\w+\.\w{2,4})?
- 一个可选的序列:@
-@
符号\w+
- 1+ 个单词字符\.
- 一个点\w{2,4}
- 2、3 或 4 个单词字符
$
- 字符串结尾。
一个非常通用的正则表达式允许更多的字符而不仅仅是 letters/digits 或下划线将是 "^(?=\S{8})(?!\S*@\S*\.\S*\.)[a-zA-Z]\S*(?:@\S+\.\S+)?$"
。它与上面 \S
(任何非空白字符)的用法不同,并且只使用否定前瞻 (?!\S*@\S*\.\S*\.)
如果在 @
之后的任何地方有 2 个点,则匹配失败。 =31=]
此表达式验证第一个字母类型的用户名,然后它可能有也可能没有数字,然后它可能有也可能没有 '.' 类型的字符。或 '_' 然后你可以有字母或数字
[a-z]+[0-9]*[_.-]?[a-z0-9]