2017-05-24 11 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 비 whitepsace 문자를 포함해야 문자열 오른쪽 문자열 후
  • [a-zA-Z]을 시작 - 아스키 문자를
  • \\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/ 사이트를 링크 해 주셔서 감사합니다. 그것은 나를 많이 도왔습니다 :) –

관련 문제