iOS 학습 의 정규 표현 식 이 iOS 에서 의 간단 한 활용

7698 단어
1. 정규 표현 식 이란 무엇 인가
정규 표현 식 은 정규 표현법 이 라 고도 부 르 며 문자열 조작 에 대한 논리 적 공식 이다.정규 표현 식 은 주어진 문자열 이 우리 가 정의 한 논리 에 부합 되 는 지, 문자열 에서 우리 가 원 하 는 특정한 부분 을 가 져 올 수 있 습 니 다.그것 은 문자열 의 복잡 한 제어 에 매우 간단 한 방식 으로 신속하게 도달 할 수 있다.
2. 문법
  • 1. 특수 기호 '^' 와 '$'.그들의 역할 은 문자열 의 시작 과 끝 을 가리 키 는 것 이다.예:
  •   “^one”:     ”one”      (”one cat”,”one123″,·····);
         :- (BOOL)hasPrefix:(NSString *)aString;
      “a dog$”:     ”a dog”      (”it is a dog”,·····);
         :- (BOOL)hasSuffix:(NSString *)aString;
      “^apple$”:         ”apple”    ,      ~;
      “banana”:      ”banana”    。
          iOS8    - (BOOL)containsString:(NSString *)aString,      。
    
  • 2. '*', '+' 와 '?'이 세 개의 기 호 는 하나 또는 N 글자 가 반복 되 는 횟수 를 나타 낸다.이들 은 각각 '없 거나 더 많은 것' ([0, + 표시] 의 정리), '한 번 또는 더 많은 것' ([1, + 표시] 의 정리), '없 거나 한 번' ([0, 1] 의 정리) 을 나타 낸다.예:
  •   “ab*”:          a          b(”a”, “ab”, “abbb”,……);
      “ab+”:          a        b    ( ”ab”, “abbb”,……);
      “ab?”:          a          b( ”a”, “ab”);
      “a?b+$”:               a       b( ”b”, “ab”,”bb”,”abb”,……)
    
  • 3. 대괄호 로 묶 기 ({}) 는 중복 되 는 구체 적 인 범 위 를 나타 낸다.예:
  •   “ab{4}”:          a  4 b(”abbbb”);
      “ab{1,}”:          a    1 b(”ab”,”abb”,”abbb”,……);
      “ab{3,4}”:          a  3 4 b(”abbb”,”abbbb”)。
        ,“*”   {0,}  ,“+”   {1,}  ,“?”   {0,1}  
        :      ,        !  “ab{,5}”      
    
  • 4. "|" 표시 "또는" 조작:
  •   “a|b”:         ”a”  ”b”;
      “(a|bcd)ef”:  ”aef” ”bcdef”;
      “(a|b)*c”:    ”a”"b”           ”c”;
    
  • 5. 네모 난 괄호 "[]" 괄호 안에 있 는 많은 문자 중에서 1 - N 개의 괄호 안에 있 는 문법 에 맞 는 문 자 를 선택 한 결과, 예:
  •   “[ab]“:          ”a” ”b”(   ”a|b”);
      “[a-d]“:            ’a' ’d'    (   ”a|b|c|d”  ”[abcd]“);
      “^[a-zA-Z]“:             ;
      “[0-9]a”:  a       ;
      “[a-zA-Z0-9]$”:                 。
    
  • 6. "." 는 "\ r" 를 제외 한 모든 문자 와 일치 합 니 다. 예:
  •   “a.[a-z]“:          ”a”                 ;
      “^.{5}$”:    1    5    ;
      “
    um” num 。 ”
    um” ,   “(.)\1″: 。   “10\{1,2\}” : 1 1 2 0 (“10″,”100″)。   ” 0\{3,\} ” 3 0 (“000”,“0000”,······)
  • 7. 괄호 안에 '나타 나 고 싶 지 않 은 문자', '괄호 안에 있어 야 한다.
  •   [“@[^a-zA-Z]4](mailto:%E2%80%9C@[^a-zA-Z]4)@”    ”@”        )。
    
  • 8.
      “ \d ”        。   [0-9]。
      “ \D”         。   [^0-9]。
      “ \w ”              。   “[A-Za-z0-9_]”。
      “ \W ”         。   “[^A-Za-z0-9_]”。
      iOS        ,      ,    “\”,  :
           :@”^\\d\+$”
    

    3. 정규 표현 식 이 iOS 에서 의 간단 한 응용
    / * * 핸드폰 번호 와 정규 일치 * /
    + (BOOL)checkTelNumber:(NSString *) telNumber;
    + (BOOL)checkTelNumber:(NSString *) telNumber
    {
        NSString *pattern = @"^1+[3578]+\\d{9}";
        NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", pattern];
        BOOL isMatch = [pred evaluateWithObject:telNumber];
        if (telNumber.length != 11) {
            return NO;
        }
        return isMatch;
    } 
    

    / * * 정규 일치 사용자 비밀번호 6 - 18 자리 숫자 와 알파벳 조합 * /
    + (BOOL)checkPassword:(NSString *) password;
    + (BOOL)checkPassword:(NSString *) password
    {
        NSString *pattern = @"^(?![0-9]+$)(?![a-zA-Z]+$)[a-zA-Z0-9]{6,18}";
        NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", pattern];
        BOOL isMatch = [pred evaluateWithObject:password];
        return isMatch;
    }
    

    / * * 정규 사용자 이름, 20 비트 중국어 또는 영어 * /
    + (BOOL)checkUserName : (NSString *) userName;
    + (BOOL)checkUserName : (NSString *) userName
    {
        NSString *pattern = @"^[a-zA-Z\u4E00-\u9FA5]{1,20}";
        NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", pattern];
        BOOL isMatch = [pred evaluateWithObject:userName];
        return isMatch;
    }
    

    / * * 정규 일치 사용자 주민등록번호 * /
    + (BOOL)checkUserIdCard: (NSString *) idCard;
    + (BOOL)checkUserIdCard: (NSString *) idCard
    {
        NSString *pattern = @"(^[0-9]{15}$)|([0-9]{17}([0-9]|X)$)";
        NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", pattern];
        BOOL isMatch = [pred evaluateWithObject:idCard];
        return isMatch;
    }
    

    / * * 정규 일치 URL * /
    + (BOOL)checkURL : (NSString *) url;
    + (BOOL)checkURL : (NSString *) url
    {
        NSString *pattern = @"^[0-9A-Za-z]{1,50}";
        NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", pattern];
        BOOL isMatch = [pred evaluateWithObject:url];
        return isMatch;
    }
    

    4. 다른 정규 표현 식
  • 암호 강도 암 호 를 검사 하 는 강 도 는 대소 문자 와 숫자의 조합 을 포함해 야 하 며 특수 문 자 를 사용 할 수 없습니다. 길 이 는 8 - 10 사이 ^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$
  • 입 니 다.
  • 중국어 문자열 은 중국어 ^[\\u4e00-\\u9fa5]{0,}$
  • 만 검사 할 수 있 습 니 다.
  • 숫자, 26 개의 영문 자모 또는 밑줄 로 구 성 된 문자열 ^\\w+$
  • 이메일 주소 확인 [\\w!#$%&'*+/=?^_`{|}~-]+(?:\\.[\\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\\w](?:[\\w-]*[\\w])?\\.)+[\\w](?:[\\w-]*[\\w])?
  • 주민등록번호 검사 15 위: ^[1-9]\\d{7}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}$ 18 위: ^[1-9]\\d{5}[1-9]\\d{3}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}([0-9]|X)$
  • 검사 날짜 "yyy - mm - dd" 형식의 날짜 검 사 는 윤년 ^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$
  • 을 고려 했다.
  • 검사 금액 금액 금액 검사, 2 비트 소수 ^[0-9]+(.[0-9]{2})?$
  • 까지 정확
  • 핸드폰 번 호 를 검사 한 다음 에 국내 13, 15, 18 로 시작 하 는 핸드폰 번호 정규 표현 식 ^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\\d{8}$
  • IE 판단 버 전 ^.*MSIE [5-8](?:\\.[0-9]+)?(?!.*Trident\\/[5-9]\\.0).*$
  • IP - v4 주소 검사 \\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\b
  • IP - v6 주소 확인 (([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))
  • URL 접두사 검사 if (!s.match(/^[a-zA-Z]+:\\/\\//)){ s = 'http://' + s;}
  • URL 링크 추출 ^(f|ht){1}(tp|tps):\\/\\/([\\w-]+\\.)+[\\w-]+(\\/[\\w- ./?%&=]*)?
  • 파일 경로 및 확장자 검사 ^([a-zA-Z]\\:|\\\\)\\\\([^\\\\]+\\\\)*[^\\/:*?"<>|]+\\.txt(l)?$
  • 색상 Hex 코드 추출 ^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$
  • 웹 페이지 이미지 추출 \\< *[img][^\\\\>]*[src] *= *[\\"\\']{0,1}([^\\"\\'\\ >]*)
  • 페이지 하이퍼링크 추출 (]*)(href="https?:\\/\\/)((?!(?:(?:www\\.)?'.implode('|(?:www\\.)?', $follow_list).'))[^"]+)"((?!.*\\brel=)[^>]*)(?:[^>]*)>
  • CSS 속성 찾기 ^\\s*[a-zA-Z\\-]+\\s*[:]{1}\\s[a-zA-Z0-9\\s.#]+[;]{1}
  • 주석 추출
  • HTML 태그 일치 \\s]+))?)+\\s*|\\s*)\\/?>
  • 좋은 웹페이지 즐겨찾기