정규 표현 식 이 IOS 에서 의 응용 및 IOS 에서 의 세 가지 정규 표현 식 의 사용 과 비교

10460 단어 ios정규 표현 식
정규 표현 식 은 ios 에 적 용 됩 니 다.
정규 표현 식
정규 표현 식 은 정규 표현법 이 라 고도 부 르 며 문자열 조작 에 대한 논리 적 공식 이다.정규 표현 식 은 주어진 문자열 이 우리 가 정의 한 논리 에 부합 되 는 지,문자열 에서 우리 가 원 하 는 특정한 부분 을 가 져 올 수 있 습 니 다.그것 은 문자열 의 복잡 한 제어 에 매우 간단 한 방식 으로 신속하게 도달 할 수 있다.
정규 표현 식 의 문법
순수 숫자 를 걸 러 내 는 예 를 보 세 요.

- (BOOL)validateNumber:(NSString *) textString


{ NSString* number=@"^[0-9]+$";
 NSPredicate *numberPre = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",number];
 return [numberPre evaluateWithObject:textString];
}
그 중에서 다음 문장 은 정규 표현 식 이다
@"^[0-9]+$"
이것 은 문자열 에 0-9 의 숫자 만 포함 되 어 있 음 을 의미 합 니 다.문법 이 좀 이상 하지 않 습 니까?
다음은 iOS 의 정규 표현 식 문법 을 떠 나 통속 적 인 정규 표현 식 문법 으로 소개 합 니 다.iOS 문법 은 일반적인 정규 표현 식 문법 과 같 습 니 다.다른 것 은 전의 문자 에 대한 처리 에 있 습 니 다.(언어 류 는 모두 같 습 니 다)
문법:
우선,특수 기호'^'와'$'.그들의 역할 은 문자열 의 시작 과 끝 을 가리 키 는 것 이다.eg:
"^one":"one"으로 시작 하 는 모든 문자열("one cat","one 123〃,.........)을 나타 낸다.
다음 과 유사:-(BOOL)hasPrefix:(NSString*)aString;
"a dog$":그래서"a dog"으로 끝 나 는 문자열("it is a dog",...);
다음 과 유사:-(BOOL)hasSuffix:(NSString*)aString;
"^apple$":시작 과 끝 이 모두"apple"이라는 문자열 입 니 다.이것 이 유일한 것 입 니 다~;
"banana":"banana"를 포함 하 는 모든 문자열 을 표시 합 니 다.
iOS 8 과 같은 새로운 방법-(BOOL)contains String:(NSString*)aString,하위 문자열 을 검색 합 니 다.
'*','+'와'?'이 세 개의 기 호 는 하나 또는 N 글자 가 반복 되 는 횟수 를 나타 낸다.이들 은 각각'없 거나 더 많은 것'([0,+표시]의 정리),'한 번 또는 더 많은 것'([1,+표시]의 정리),'없 거나 한 번'([0,1]의 정리)을 나타 낸다.다음은 몇 가지 예 입 니 다.
"ab*":하나의 문자열 이 a 뒤에 0 개 또는 몇 개의 b("a","ab","abbb","abbb"를 따 르 는 것 을 나타 낸다.
"ab+":하나의 문자열 이 a 뒤에 최소한 b 이상 따라 다 니 는 것 을 나타 낸다("ab","abbb",...).
  “ab?”:하나의 문자열 에 a 뒤에 0 개 또는 b("a","ab")가 있 음 을 나타 낸다.
"a?b+$":문자열 의 끝 에 0 개 또는 1 개 a 가 하나 또는 몇 개 b("b","ab","bb","abb",...)가 있 음 을 나타 낸다.
큰 괄호 로 묶 을 수 있 습 니 다({}).중복 되 는 구체 적 인 범 위 를 표시 합 니 다.예컨대
"ab{4}":하나의 문자열 에 a 가 4 개의 b("abbbb")를 따 르 는 것 을 나타 낸다.
"ab{1,}":하나의 문자열 에 a 가 최소 1 개의 b("ab","abb","abbb","abbb"를 따 르 고 있 음 을 나타 낸다.
"ab{3,4}":하나의 문자열 에 a 가 3 에서 4 개의 b("abbb","abbbb")를 따 르 는 것 을 나타 낸다.
그러면"*"는{0,}으로 표시 할 수 있 습 니 다."+"는{1,}으로 표시 할 수 있 습 니 다."?"{0,1}으로 표시 할 수 있 습 니 다.
주의:하한 선 이 없 을 수 있 지만 상한 선 이 없 으 면 안 됩 니 다!예 를 들 어"ab{,5}"은 잘못된 쓰기 입 니 다.
"|"은"또는"동작 을 표시 합 니 다.
"a|b":문자열 에"a"또는"b"가 있 음 을 표시 합 니 다.
"(a|bcd)ef":"aef"또는"bcdef"를 표시 합 니 다.
"(a|b)*c":"a","b"가 혼 합 된 문자열 뒤에"c"를 표시 합 니 다.
"네모 난 괄호"[]"괄호 안에 있 는 많은 문자 중에서 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]$":문자열 이 알파벳 이나 숫자 로 끝 나 는 것 을 표시 합 니 다.
"."는"\r"를 제외 한 모든 문자 와 일치 합 니 다.
"a.[a-z]":하나의 문자열 에"a"가 있다 는 뜻 입 니 다.뒤에 임의의 문자 와 소문 자 를 따 릅 니 다.
"^.{5}$":임의의 길이 가 5 인 문자열 을 표시 합 니 다.
'um'중 num 은 정수 이다."um"이전의 문자 에 같은 개수 가 나타 나 는 것 을 나타 낸다.예 를 들 어
"(.)\\1〃:두 연속 의 동일 문 자 를 나타 낸다.
"10\{1,2\}":숫자 1 뒤에 1 또는 2 개의 0("10〃,"100〃)이 따른다 는 뜻 이다.
"0\{3,\}"은 숫자 가 최소 3 연속 0("000","0000",...)임 을 나타 낸다.
괄호 안에'^'로 나타 나 고 싶 지 않 은 문 자 를 표시 합 니 다.'^'는 괄호 안에 있어 야 합 니 다.
4.567915.@은 두 개의'@'에 알파벳 이 나타 나 면 안 된다 는 것 을 나타 낸다.
자주 사용 하 는 것 은 다음 과 같다.
"\d"는 숫자 문자 와 일치 합 니 다.등가
"\D"는 비 숫자 문자 와 일치 합 니 다.등가
"\w"는 밑줄 친 모든 단어 문자 와 일치 합 니 다.'[A-Za-z0-9]'와 같다.
"\W"는 단어 가 아 닌 모든 문자 와 일치 합 니 다."[^A-Za-z0-9]"와 같 습 니 다.
iOS 에서 정규 표현 식 을 쓰 고 전의 문 자 를 만나면'\'를 추가 합 니 다.예 를 들 어:
모든 숫자 문자:@"^\\d\+$"
3.iOS 의 정규 표현 식
1.정규 표현 식 은 NSPredicate 와 연 결 됩 니 다.eg:

- (BOOL)validateNumber:(NSString *) textString
{
 NSString* number=@"^[0-9]+$";
 NSPredicate *numberPre = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",number];
 return [numberPre evaluateWithObject:textString];
}
2.NSString 방법

  - (NSRange)rangeOfString:(NSString *)aString options:(NSStringCompareOptions)mask;

NSString *searchText = @"rangeOfString";
NSRange range = [searchText rangeOfString:@"^[0-9]+$" options:NSRegularExpressionSearch];
if (range.location != NSNotFound) {
 NSLog(@"range :%@", [searchText substringWithRange:range]);
}
3.정규 표현 식 클래스(NSRegularExpression)

NSString *searchText = @"you want to match"; 
NSError *error = NULL;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"^[0-9]+$" options:NSRegularExpressionCaseInsensitive error:&error];
NSTextCheckingResult *result = [regex firstMatchInString:searchText options:0 range:NSMakeRange(0, [searchText length])];
if (result) {
 NSLog(@"%@", [searchText substringWithRange:result.range]);
}
4.정규 표현 식
아래 빨간색 문자열 은 정규 표현 식(아래 정규 표현 식 은 바 이 두 백과 에서 온 것)입 니 다.
1.사용자 이름과 비밀 번 호 를 검증 합 니 다:"^[a-ZA-Z]\w{5,15}$"
2.전화번호 검증:("^(“@[^a-zA-Z]4")
  eg:021-68686868  0511-6868686;
3.핸드폰 번호 검증:"^1[3|4|5|7|8][0-9]\\\d{8}$";
4.주민등록번호(15 자리 또는 18 자리 숫자)검증:"\\d{14}[0-9],0-9xx]";
5.이메일 주소 검증:("^\\\\w+([-+.]\\\w+)*@\\\\\w+([-.]\\\\w+)*\\\\\w+([-.]\\\\\w+)*$");
6.숫자 와 26 개의 영문 자모 로 구 성 된 문자열 만 입력 할 수 있 습 니 다.("^[A-Za-z0-9]+$");
7.정수 나 소수:^[0-9]+([.]{0,1}[0-9]+){0,1}$
8.숫자 만 입력:"^[0-9]*$".
9.n 자리 숫자 만 입력 할 수 있 습 니 다:"^\\d{n}$".
10.최소 n 자리 숫자 만 입력 할 수 있 습 니 다:"^\\d{n,}$".
11.m~n 자리 숫자 만 입력 할 수 있 습 니 다:"^\\d{m,n}$".
12.0 과 0 이 아 닌 시작 숫자 만 입력 할 수 있 습 니 다."^(0|[1-9][0-9]*)$".
13.두 개의 소수 가 있 는 정실 수 만 입력 할 수 있 습 니 다:"^[0-9]+([0-9]{2})?$".
14.1~3 자리 소수 가 있 는 정실 수 만 입력 할 수 있 습 니 다."^[0-9]+(\.0-9]{1,3})?$".
15.0 이 아 닌 정수 만 입력 할 수 있 습 니 다:"^\+?[1-9][0-9]*$”。
16.0 이 아 닌 음정 수 만 입력 할 수 있 습 니 다:"^\-[1-9][]0-9〃*$.
17.길이 가 3 인 문자 만 입력 할 수 있 습 니 다:"^.{3}$".
18.영문 자모 26 개 로 구 성 된 문자열 만 입력 할 수 있 습 니 다:"^[A-Za-z]+$".
19.대문자 26 개 로 구 성 된 문자열 만 입력 할 수 있 습 니 다:"^[A-Z]+$".
20.소문 자 26 개 로 구 성 된 문자열 만 입력 할 수 있 습 니 다:"^[a-z]+$".
21.^%&',;=?$\'가 들 어 있 는 지 확인 합 니 다.등 문자:"[^%&',;=?$\\x22]+”。
22.한자 만 입력 할 수 있 습 니 다:"^[\u4e 00-\u9fa 5]{0,}$".
23.URL 검증:"^http://([\\\w-]+\.)+[\\\w-]+(/[\\\\w-./?%&=]*)?$"
24.검증 1 년 12 개 월:"^(0?[1-9]|1[0-2]$의 정확 한 형식 은"01〃~"09〃와"10〃~"12〃이다.
25.검증 한 달 31 일:"^(0?[1-9])|(1|2)[0-9]|30|31)$"정확 한 형식 은;"01〃~09〃,10〃~29〃와 30~31.
26.날짜 정규 표현 식 가 져 오기:\\d{3,4}-)\\d{7,8}$}[년|\-|\.]\\\\d{\1-\12}[월|\-|\.]\\\\d{\1-\31}일?
평가:대부분의 년 월 일 정보 에 맞 게 사용 할 수 있 습 니 다.
27.두 바이트 문자 일치(한자 포함):[^\x00-\xff]
주석:문자열 의 길 이 를 계산 할 수 있 습 니 다.(두 바이트 문자 길이 계 2,ASCII 문자 계 1)
28.공백 줄 과 일치 하 는 정규 표현 식:\s*\r
주석:빈 줄 을 삭제 하 는 데 사용 할 수 있 습 니 다.
29.HTML 태그 와 일치 하 는 정규 표현 식:<(\S*?)[^>]*>.*?|<.*?/>
평 주:인터넷 에 떠 도 는 버 전이 너무 엉망 이 고 위 에 있 는 것 도 일치 하 는 부분 만 있 을 뿐 복잡 한 내장 표 시 는 여전히 무력 합 니 다.
30.앞 뒤 공백 문자 와 일치 하 는 정규 표현 식:^\s*|\s*$
평가:줄 의 첫 줄 끝의 공백 문자(빈 칸,탭 문자,페이지 바 꾸 기 등 포함)를 삭제 할 수 있 습 니 다.매우 유용 한 표현 식 입 니 다.
31.URL 과 일치 하 는 정규 표현 식:[a-zA-z]+:/[^\s]*
평가:인터넷 에 떠 도 는 버 전 기능 이 매우 제한 되 어 있 습 니 다.위 에 있 는 이것 은 기본적으로 수 요 를 만족 시 킬 수 있 습 니 다.
32.일치 하 는 계 정 이 합 법 적 인지 여부(알파벳 시작,5-16 바이트 허용,알파벳 숫자 밑줄 허용):^[a-zA-Z][a-zA-Z0-9]{4,15}$
평가:폼 검증 시 실 용적 입 니 다.
33.텐 센트 QQ 번호 와 일치:[1-9][0-9]\{4,\}
평가:텐 센트 QQ 번 호 는 1000 부터 시작 합 니 다.
34.중국 우편 번호 와 일치:[1-9]\\d{5}(?!\d)
평가:중국 우편 번호 6 자리 숫자
35.IP 주소 일치:(2[0-4]\\\\d|25[0-5]|[01]?\\\\d\\d?)\.){3}(2[0-4]\\d|25[0-5]|[01]?\\d\\d?)。
iOS 에서 정규 표현 식 3 가지 사용 및 비교
이전에 나 는 블 로그 에서 iOS 에서 정규 표현 식 의 사용(전송 문)을 소개 한 적 이 있 는데,나중에 나 는 사실 iOS 에서 정규 표현 식 의 일치 성 을 실현 하 는 세 가지 방식 이 있다 는 것 을 알 게 되 었 다.지금 그들 을 모두 여기에 기록 합 니 다.
1.NSPredicate(술어)를 사용 하여 일치
예 를 들 어 유효한 메 일 박스 와 일치 합 니 다:

NSString *email = @“[email protected]”; 
NSString *regex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"; 
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex]; 
BOOL isValid = [predicate evaluateWithObject:email];
서술 어 는 비교적 유연 하지만 서술 어 에 관 한 지식 이 필요 하 다.
2.rangeOfString:option:직접 찾기

NSString *searchText = @"// Do any additional setup after loading the view, typically from a nib."; 
NSRange range = [searchText rangeOfString:@"(?:[^,])*\\." options:NSRegularExpressionSearch]; 
if (range.location != NSNotFound) { 
 NSLog(@"%@", [searchText substringWithRange:range]); 
}
options 에서 NSRegular ExpressionSearch 를 설정 하면 정규 표현 식 을 사용 하여 일치 하 는 첫 번 째 결과 의 위 치 를 되 돌려 줍 니 다.
3.정규 표현 식 클래스 사용

NSString *searchText = @"// Do any additional setup after loading the view, typically from a nib."; 
NSError *error = NULL;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"(?:[^,])*\\." options:NSRegularExpressionCaseInsensitive error:&error];
NSTextCheckingResult *result = [regex firstMatchInString:searchText options:0 range:NSMakeRange(0, [searchText length])];
if (result) {
 NSLog(@"%@
", [searchText substringWithRange:result.range]); }
시스템 의 정규 표현 식 클래스(NSRegular Expression)를 사용 하면 일치 하 는 여러 결 과 를 되 돌려 줍 니 다.
이상 의 내용 은 본문의 전체 내용 이 니 모두 가 좋아 하 시 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기