forked from shaojiankui/JKCategories
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request shaojiankui#8 from KevinHM/master
UIViewController+BackButtonHandler;NSString+RegexCategory
- Loading branch information
Showing
5 changed files
with
574 additions
and
0 deletions.
There are no files selected for viewing
154 changes: 154 additions & 0 deletions
154
Categories/Foundation/NSString/NSString+RegexCategory.h
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,154 @@ | ||
// | ||
// NSString+RegexCategory.h | ||
// IOS-Categories | ||
// | ||
// Created by KevinHM on 15/6/24. | ||
// Copyright (c) 2015年 KevinHM. All rights reserved. | ||
// https://github.com/KevinHM | ||
// | ||
|
||
#import <Foundation/Foundation.h> | ||
/** | ||
* 正则表达式简单说明 | ||
* 语法: | ||
. 匹配除换行符以外的任意字符 | ||
\w 匹配字母或数字或下划线或汉字 | ||
\s 匹配任意的空白符 | ||
\d 匹配数字 | ||
\b 匹配单词的开始或结束 | ||
^ 匹配字符串的开始 | ||
$ 匹配字符串的结束 | ||
* 重复零次或更多次 | ||
+ 重复一次或更多次 | ||
? 重复零次或一次 | ||
{n} 重复n次 | ||
{n,} 重复n次或更多次 | ||
{n,m} 重复n到m次 | ||
\W 匹配任意不是字母,数字,下划线,汉字的字符 | ||
\S 匹配任意不是空白符的字符 | ||
\D 匹配任意非数字的字符 | ||
\B 匹配不是单词开头或结束的位置 | ||
[^x] 匹配除了x以外的任意字符 | ||
[^aeiou]匹配除了aeiou这几个字母以外的任意字符 | ||
*? 重复任意次,但尽可能少重复 | ||
+? 重复1次或更多次,但尽可能少重复 | ||
?? 重复0次或1次,但尽可能少重复 | ||
{n,m}? 重复n到m次,但尽可能少重复 | ||
{n,}? 重复n次以上,但尽可能少重复 | ||
\a 报警字符(打印它的效果是电脑嘀一声) | ||
\b 通常是单词分界位置,但如果在字符类里使用代表退格 | ||
\t 制表符,Tab | ||
\r 回车 | ||
\v 竖向制表符 | ||
\f 换页符 | ||
\n 换行符 | ||
\e Escape | ||
\0nn ASCII代码中八进制代码为nn的字符 | ||
\xnn ASCII代码中十六进制代码为nn的字符 | ||
\unnnn Unicode代码中十六进制代码为nnnn的字符 | ||
\cN ASCII控制字符。比如\cC代表Ctrl+C | ||
\A 字符串开头(类似^,但不受处理多行选项的影响) | ||
\Z 字符串结尾或行尾(不受处理多行选项的影响) | ||
\z 字符串结尾(类似$,但不受处理多行选项的影响) | ||
\G 当前搜索的开头 | ||
\p{name} Unicode中命名为name的字符类,例如\p{IsGreek} | ||
(?>exp) 贪婪子表达式 | ||
(?<x>-<y>exp) 平衡组 | ||
(?im-nsx:exp) 在子表达式exp中改变处理选项 | ||
(?im-nsx) 为表达式后面的部分改变处理选项 | ||
(?(exp)yes|no) 把exp当作零宽正向先行断言,如果在这个位置能匹配,使用yes作为此组的表达式;否则使用no | ||
(?(exp)yes) 同上,只是使用空表达式作为no | ||
(?(name)yes|no) 如果命名为name的组捕获到了内容,使用yes作为表达式;否则使用no | ||
(?(name)yes) 同上,只是使用空表达式作为no | ||
捕获 | ||
(exp) 匹配exp,并捕获文本到自动命名的组里 | ||
(?<name>exp) 匹配exp,并捕获文本到名称为name的组里,也可以写成(?'name'exp) | ||
(?:exp) 匹配exp,不捕获匹配的文本,也不给此分组分配组号 | ||
零宽断言 | ||
(?=exp) 匹配exp前面的位置 | ||
(?<=exp) 匹配exp后面的位置 | ||
(?!exp) 匹配后面跟的不是exp的位置 | ||
(?<!exp) 匹配前面不是exp的位置 | ||
注释 | ||
(?#comment) 这种类型的分组不对正则表达式的处理产生任何影响,用于提供注释让人阅读 | ||
* 表达式:\(?0\d{2}[) -]?\d{8} | ||
* 这个表达式可以匹配几种格式的电话号码,像(010)88886666,或022-22334455,或02912345678等。 | ||
* 我们对它进行一些分析吧: | ||
* 首先是一个转义字符\(,它能出现0次或1次(?),然后是一个0,后面跟着2个数字(\d{2}),然后是)或-或空格中的一个,它出现1次或不出现(?), | ||
* 最后是8个数字(\d{8}) | ||
*/ | ||
|
||
#import <Foundation/Foundation.h> | ||
|
||
@interface NSString (RegexCategory) | ||
/** | ||
* 手机号码的有效性:分电信、联通、移动和小灵通 | ||
*/ | ||
- (BOOL)isMobileNumberClassification; | ||
/** | ||
* 手机号有效性 | ||
*/ | ||
- (BOOL)isMobileNumber; | ||
|
||
/** | ||
* 邮箱的有效性 | ||
*/ | ||
- (BOOL)isEmailAddress; | ||
|
||
/** | ||
* 简单的身份证有效性 | ||
* | ||
*/ | ||
- (BOOL)simpleVerifyIdentityCardNum; | ||
|
||
/** | ||
* 精确的身份证号码有效性检测 | ||
* | ||
* @param value 身份证号 | ||
*/ | ||
+ (BOOL)accurateVerifyIDCardNumber:(NSString *)value; | ||
|
||
/** | ||
* 车牌号的有效性 | ||
*/ | ||
- (BOOL)isCarNumber; | ||
|
||
/** | ||
* 银行卡的有效性 | ||
*/ | ||
- (BOOL)bankCardluhmCheck; | ||
|
||
/** | ||
* IP地址有效性 | ||
*/ | ||
- (BOOL)isIPAddress; | ||
|
||
/** | ||
* Mac地址有效性 | ||
*/ | ||
- (BOOL)isMacAddress; | ||
|
||
//#pragma mark - 这部分可以根据您的应用视情况定规则,下面为示例代码 | ||
///** | ||
// * 是否纯数字 | ||
// */ | ||
//- (BOOL)isDigitalAll; | ||
// | ||
///** | ||
// * 用户名 | ||
// */ | ||
//- (BOOL) validateUserName; | ||
// | ||
///** | ||
// * 昵称 | ||
// */ | ||
//- (BOOL) validateNickname; | ||
// | ||
///** | ||
// * 密码 | ||
// */ | ||
//- (BOOL) validatePassword; | ||
|
||
@end |
Oops, something went wrong.