[정규 표현 식] 자주 사용 하 는 정규 표현 식 개발

7270 단어
정규 표현 식 은 텍스트 와 일치 하 는 도구 로 문법 이 아름 답 고 간결 합 니 다.개발 에서 검색, 대비, 일치 하 는 문자열 을 찾 는 것 은 일상적인 업무 입 니 다. 정규 표현 식 을 통 해 우 리 는 이러한 업 무 를 특정한 수요 규칙 으로 묘사 하여 우리 의 코드 를 더욱 아름 답 고 실 용적 으로 만 듭 니 다.예 를 들 어 사용자 가 입력 한 암호 길이 가 6 ~ 18 비트 의 길 이 를 만족 시 키 는 지 검증 해 야 합 니 다. 초보 자 들 이 가장 흔히 볼 수 있 는 검증 방식 은 입력 한 암호 길이 return (textField. text. length > = 6 & & textField. text. leng < = 18) 을 판단 하 는 것 입 니 다.비록 이러한 판단 방식 은 아무런 문제 가 없 지만 위의 검증 을 정규 표현 식 의 일치 문자 로 바 꾸 면 짧 고 간결 해 보 입 니 다 ^. {6, 18} 그리고 대부분의 고정 전 화 는 0 지역 번호 - 8 자리 숫자의 형식 입 니 다. 그러면 정규 표현 식 의 매 칭 은 다음 과 같 습 니 다. \ d2 -? \d8 예 를 들 어 비밀번호 강도 에 대한 인증.현재 암 호 는 대문자 와 소문 자 를 하나 이상 포함해 야 합 니 다. 이 정규 표현 식 의 일치 성 은 (^ [A - Z] + [a - z] +. * |. * 8727 ° [a - z] +. 8727 ° [A - Z] +. 8727 °) 표현 식 문자 해석 이 초보 개발 자 라면 위의 정규 표현 식 을 이해 하지 못 할 수도 있 습 니 다.그러면 첫 번 째 일치 조건 을 살 펴 보고 6 - 18 비트 의 암호 길 이 를 맞 춥 니 다.문제 의 요구 에 따라 {6, 18} 은 6 - 18 위 를 쉽게 판단 할 수 있다.그 중에서 {n} 일치 하 는 문 자 는 n 회 반복 합 니 다.{n,} 일치 n 회 이상 반복;{n, m} 은 n 에서 m 사이 의 반복 횟수 와 일치 합 니 다.그러면 독 자 는 ^, 그리고 세 개의 기호 에 대해 불분명 할 수 있 습 니 다. 그래서.특수 기호 에 속 하고 전 자 는 문자열 과 일치 하 는 시작 을 나타 내 며 후 자 는 문자열 과 일치 하 는 끝 을 나타 낸다.우 리 는 때때로 긴 문자열 에서 작은 세 션 문자열 과 일치 해 야 할 때 (예 를 들 어 그림 혼합 에서 긴 문자열 에 빈 이모 티 콘 과 일치 하 는 경우) 이 두 기 호 를 적당 하 게 사용 하면 일치 하 는 횟수 를 줄 이 고 실행 효율 을 높 일 수 있 습 니 다.그러면 이 몇 개의 문자 가 의 미 를 대표 하 는 것 을 결합 하면 알 수 있 습 니 다. 기 호 는 모든 문 자 를 표시 합 니 다 (줄 바 꿈 자 를 제외 하고).그러면 {6, 18} 이라는 특수 기 호 는 앞의 기호 가 대표 하 는 자릿수 를 나타 낸다.결합 하면 ^. {6, 18} 6 ~ 18 비트 길이 의 문자열 과 일치 하기 때문에 암호 길 이 를 검증 할 수 있 습 니 다. 물론 문자 의 일치 율 이 너무 높 습 니 다. 숫자 나 알파벳, 심지어 정확 한 숫자 와 알파벳 까지 일치 해 야 할 때 가 많 습 니 다.그러면 문 자 를 제외 하고 \ d 는 임의의 단일 숫자 를 나타 내 는 데 사용 되 고 \ w 는 임의의 자모 나 숫자 를 나타 내 거나 0 - 9 의 임 의 숫자 를 직접 사용 하여 구체 적 인 숫자 를 나타 낸다.특수 기호?이전 문자 가 0 또는 1 개 임 을 나타 낸다.그래서 위의 0 \ d2 −? \d8 은 숫자 0 으로 시작 하여 두 개의 숫자 를 이 어 다음 에 - 번호 와 8 개의 숫자 를 따라 끝 나 는 문자열 과 일치 합 니 다. 010 - 88888888 이 든 02098989898 이 든 모두 정확하게 일치 할 수 있 습 니 다.마지막 표현 식 은 아마도 가장 복잡 한 표현 식 일 것 입 니 다. 위 에서 부분 기호 에 대한 해석 에 따라.우 리 는 ^ [A - Z] + [a - z] +. * |......................................................................우 리 는 이 표현 식 의 일치 규칙 을 하나씩 식별 하기 위해 이전 것 을 분리 할 것 이다.여기 서 제 가 표현 식 을 나 누 는 방법 을 알려 드 리 겠 습 니 다. 저 는 표현 식 의 문 자 를 두 가지 로 나 누 었 습 니 다. 값 표현 과 수식 표현 입 니 다.값 표현 이란 이 기호 가 특정한 값 을 나타 내 는 것 이다. 예 를 들 어 \ d 는 숫자 를 나타 내 고 임의의 비 줄 문자 임 을 나타 낸다.수식 표현 은 수식 값 이 어떤 조건 을 달성 하 는 데 사용 된다. 예 를 들 어 {2} 은 앞의 값 이 두 번 반복 되 는 것 을 나타 내 고 앞의 값 이 0 번 반복 되 거나 여러 번 반복 되 는 것 을 나타 낸다.이런 방법 에 따라 ^ [A - Z] + [a - z] +. 부분 으로 나 눌 수 있 습 니 다. ^,. *, [A - Z] +, [a - z] +. ^ $더 이상 말 하지 않 겠 습 니 다.여기 서 소개 하고 자 하 는 것 은 앞의 값 기호 가 임 의 횟수 를 반복 하 는 것 을 나타 내 는 것 이다.[A - Z] + 중 - 왼쪽 값 에서 오른쪽 값 사이 의 모든 값 이 형 성 된 폐 집합 을 나타 낸다.[] 네모 난 괄호 가 표시 하 는 값 은 반드시 괄호 중간 에 집합 하 는 부분 집합 이 어야 한다. 주의해 야 할 것 은 괄호 안에 여러 개의 집합 이 있 을 수 있다 는 것 이다. 예 를 들 어 [A - Z0 - 9a - z] 는 임의의 대소 문자 나 숫자 와 일치 하 는 것 을 나타 낸다. +동 * 약간 비슷 하지만 + 는 최소한 하나의 중복 값 을 나타 낸다.위의 해석 과 결합 하면 ^ [A - Z] + [a - z] +. * 는 임의의 수량의 문자 로 시작 한 다음 에 대문자, 대문자 뒤에 임의의 수량의 문자 와 소문 자가 있 고 그 다음 에 임의의 수량의 숫자, 자모 또는 문자 가 있다 는 것 을 나타 낸다.그리고......................................................................................ps: 주의해 야 할 것 이 있 습 니 다. 위 에 보 여 준 표현 식 해석 시 \ d 이 특수 기호 들 은 우리 코드 에 \ \ 가 하나 더 있 습 니 다. 이것 은 \ 자체 가 전의 기호 이기 때 문 입 니 다. 표현 식 이 정상적으로 일치 하도록 하기 위해 서 우 리 는 \ \ 에 전 의 를 해 야 하기 때문에 \ 가 되 었 습 니 다.기본적으로 모든 기호 문 자 는 전의 가 필요 하 다.문법 / 문자 설명 표 값 표현 입 니 다. 줄 바 꿈 자 를 제외 한 임의의 문자 와 일치 합 니 다. \ w 알파벳 이나 숫자 와 일치 하 는 문자 \ W 는 알파벳 이나 숫자 가 아 닌 임의의 문자 와 일치 합 니 다. \ s 는 임의의 공백 문자 (빈 칸, 탭 문자, 줄 바 꿈 문자) 와 일치 합 니 다.\ S 는 공백 문자 가 아 닌 임의의 문자 와 일치 합 니 다 \ \ d 는 임의의 숫자 가 아 닌 문자 와 일치 합 니 다 \ \ b 는 단어의 끝 이나 시작 문자 와 일치 합 니 다 \ B 는 단어의 끝 이나 시작 이 아 닌 문자 와 일치 합 니 다 [^ x] 는 임의의 비 x 문자 와 일치 합 니 다.예 를 들 어 [^ [a - z]] 소문 자가 아 닌 임의의 문자 와 일치 합 니 다 ^ 문자열 의 시작 $일치 하 는 문자열 의 끝 수식 표현 * 일치 하 는 임의의 횟수 + 한 번 이상 반복 하 는 횟수 와 일치 합 니까?한 번 또는 0 번 {n} 과 일치 하 는 반복 n 번 {n,} 은 n 번 또는 n 번 이상 {n, m} 과 일치 합 니 다.더 많은 지식 을 알 고 싶 으 면 도 모 구 글 을 사용 할 수 있 습 니 다.코드 실 조 에서 우 리 는 정규 표현 식 에서 각 문자 가 대표 하 는 의 미 를 간단하게 설명 했다. 그러면 iOS 개발 에서 어떻게 사용 해 야 하 는 지.정규 규칙 을 사용 하여 일치 하 는 개발 자 에 게 제 제안 은 분류 방법 으로 포장 하고 한 번 에 포장 하 며 여러 번 호출 하 는 것 입 니 다.다음은 제 가 봉 인 된 코드 로 설명 하 겠 습 니 다.이 방법 들 은 UITextField 확장 방법 을 통 해 이 루어 집 니 다: @ interface UITextField (LXDValidate) /!텍스트 상자 가 비어 있 는 지 판단 하기 (비정규 표현 식) / - (BOOL) isEmpty; /!메 일이 올 바른 지 판단 하기 / - (BOOL) vaidate Email; /!인증 코드 가 올 바른 지 판단 하기 / - (BOOL) validateAuthen; /!암호 형식 이 올 바른 지 판단 하기 / - (BOOL) validatePassword; /!핸드폰 번호 가 맞 는 지 판단 하기 / - (BOOL) validatePhone 번호; /!자신의 정규 입력 을 써 서 판단 / - (BOOL) vaidate WithRegExp: (NSString *) regExp; @end 방법 구현 파일:
#import "UITextField+LXDValidate.h"
@implementation UITextField (LXDValidate)
- (BOOL)isEmpty
{
return self.text.length == ;
}
- (BOOL)validateEmail
{
return [self validateWithRegExp: @"^[a-zA-Z-]{,}@[a-z-A-Z]{,}\\.[a-zA-Z]{,}$"];
}
- (BOOL)validateAuthen
{
return [self validateWithRegExp: @"^\\d{,}$"];
}
- (BOOL)validatePassword
{
NSString * length = @"^\\w{,}$";    //  
NSString * number = @"^\\w*\\d+\\w*$";   //  
NSString * lower = @"^\\w*[a-z]+\\w*$";   //    
NSString * upper = @"^\\w*[A-Z]+\\w*$";  //    
return [self validateWithRegExp: length] && [self validateWithRegExp: number] && [self validateWithRegExp: lower] && [self validateWithRegExp: upper];
}
- (BOOL)validatePhoneNumber
{
NSString * reg = @"^\\d{}$";
return [self validateWithRegExp: reg];
}
- (BOOL)validateWithRegExp: (NSString *)regExp
{
NSPredicate * predicate = [NSPredicate predicateWithFormat: @"SELF MATCHES %@", regExp];
return [predicate evaluateWithObject: self.text];
}
@end

좋은 웹페이지 즐겨찾기