hab*_*bed 2 regex username ios nsregularexpression swift
用户名regex应该是至少8个字符长的任何字符串。该字符串中可以有@符号,句点,数字或没有。我在下面放置了一些有效和无效的测试用例。我该如何实现?
有效:
user@user.com
adminuser1
user.user@user.com
Run Code Online (Sandbox Code Playgroud)
无效:
user@user.user.com
1adminuser1
Run Code Online (Sandbox Code Playgroud)
目前我有:
let usernameRegex = "\\A\\w{6,30}\\z"
Run Code Online (Sandbox Code Playgroud)
您似乎过度限制了用户名中使用的电子邮件。一个基本的电子邮件模式是\S+@\S+\.\S+匹配电子邮件之类的东西,但是您似乎不想让用户名以数字开头,并且域部分不能包含2个点。
根据这些假设,有一种方法可以将“模式”固定为
"^(?=\\S{8})[a-zA-Z]\\w*(?:\\.\\w+)*(?:@\\w+\\.\\w{2,4})?$"
Run Code Online (Sandbox Code Playgroud)
参见regex演示。这里,
^ -字符串开始(?=\\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个字元的字元$ -字符串结尾。一个非常通用的正则表达式允许的字符不仅仅是字母/数字或下划线"^(?=\\S{8})(?!\\S*@\\S*\\.\\S*\\.)[a-zA-Z]\\S*(?:@\\S+\\.\\S+)?$"。它与上面的用法\S(任何非空白char)不同,只是使用了一个负向的超前行为(?!\\S*@\\S*\\.\\S*\\.),如果后面有2个点,则匹配失败@。