ios 正则表达式

常用正则表达式:

  匹配双字节字符(包括汉字在内):[^x00-xff]

  评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)

  匹配空白行的正则表达式:ns*r

  评注:可以用来删除空白行

  匹配HTML标记的正则表达式:<(S*?)[^>]*>.*?|<.*? />

  评注:网上流传的版本太糟糕,上面这个也仅仅能匹配部分,对于复杂的嵌套标记依旧无能为力

  匹配首尾空白字符的正则表达式:^s*|s*$

  评注:可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式

  匹配Email地址的正则表达式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*

  评注:表单验证时很实用

  匹配网址URL的正则表达式:[a-zA-z]+://[^s]*

  评注:网上流传的版本功能很有限,上面这个基本可以满足需求

  匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$

  评注:表单验证时很实用

  匹配国内电话号码:d{3}-d{8}|d{4}-d{7}

  评注:匹配形式如 0511-4405222 或 021-87888822

  匹配腾讯QQ号:[1-9][0-9]{4,}

  评注:腾讯QQ号从10000开始

  匹配中国邮政编码:[1-9]d{5}(?!d)

  评注:中国邮政编码为6位数字

  匹配身份证:d{15}|d{18}

  评注:中国的身份证为15位或18位

  匹配ip地址:d+.d+.d+.d+

  评注:提取ip地址时有用

  匹配特定数字:

  ^[1-9]d*$    //匹配正整数

  ^-[1-9]d*$   //匹配负整数

  ^-?[1-9]d*$   //匹配整数

  ^[1-9]d*|0$  //匹配非负整数(正整数 + 0)

  ^-[1-9]d*|0$   //匹配非正整数(负整数 + 0)

  ^[1-9]d*.d*|0.d*[1-9]d*$   //匹配正浮点数

  ^-([1-9]d*.d*|0.d*[1-9]d*)$  //匹配负浮点数

  ^-?([1-9]d*.d*|0.d*[1-9]d*|0?.0+|0)$  //匹配浮点数

  ^[1-9]d*.d*|0.d*[1-9]d*|0?.0+|0$   //匹配非负浮点数(正浮点数 + 0)

  ^(-([1-9]d*.d*|0.d*[1-9]d*))|0?.0+|0$  //匹配非正浮点数(负浮点数 + 0)

  评注:处理大量数据时有用,具体应用时注意修正

  匹配特定字符串:

  ^[A-Za-z]+$  //匹配由26个英文字母组成的字符串

  ^[A-Z]+$  //匹配由26个英文字母的大写组成的字符串

  ^[a-z]+$  //匹配由26个英文字母的小写组成的字符串

  ^[A-Za-z0-9]+$  //匹配由数字和26个英文字母组成的字符串

  ^w+$  //匹配由数字、26个英文字母或者下划线组成的字符串

  在使用RegularExpressionValidator验证控件时的验证功能及其验证表达式介绍如下:

  只能输入数字:“^[0-9]*$”

  只能输入n位的数字:“^d{n}$”

  只能输入至少n位数字:“^d{n,}$”

  只能输入m-n位的数字:“^d{m,n}$”

  只能输入零和非零开头的数字:“^(0|[1-9][0-9]*)$”

  只能输入有两位小数的正实数:“^[0-9]+(.[0-9]{2})?$”

  只能输入有1-3位小数的正实数:“^[0-9]+(.[0-9]{1,3})?$”

  只能输入非零的正整数:“^+?[1-9][0-9]*$”

  只能输入非零的负整数:“^-[1-9][0-9]*$”

  只能输入长度为3的字符:“^.{3}$”

  只能输入由26个英文字母组成的字符串:“^[A-Za-z]+$”

  只能输入由26个大写英文字母组成的字符串:“^[A-Z]+$”

  只能输入由26个小写英文字母组成的字符串:“^[a-z]+$”

  只能输入由数字和26个英文字母组成的字符串:“^[A-Za-z0-9]+$”

  只能输入由数字、26个英文字母或者下划线组成的字符串:“^w+$”

  验证用户密码:“^[a-zA-Z]w{5,17}$”正确格式为:以字母开头,长度在6-18之间,

  只能包含字符、数字和下划线。

  验证是否含有^%&‘,;=?$"等字符:“[^%&‘,;=?$x22]+”

  只能输入汉字:“^[u4e00-u9fa5],{0,}$”

  验证Email地址:“^w+[-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$”

  验证InternetURL:“^http://([w-]+.)+[w-]+(/[w-./?%&=]*)?$”

  验证电话号码:“^((d{3,4})|d{3,4}-)?d{7,8}$”

  正确格式为:“XXXX-XXXXXXX”,“XXXX-XXXXXXXX”,“XXX-XXXXXXX”,

  “XXX-XXXXXXXX”,“XXXXXXX”,“XXXXXXXX”。

  验证身份证号(15位或18位数字):“^d{15}|d{}18$”

  验证一年的12个月:“^(0?[1-9]|1[0-2])$”正确格式为:“01”-“09”和“1”“12”

  验证一个月的31天:“^((0?[1-9])|((1|2)[0-9])|30|31)$”

  正确格式为:“01”“09”和“1”“31”。

  匹配中文字符的正则表达式: [u4e00-u9fa5]

  匹配双字节字符(包括汉字在内):[^x00-xff]

  匹配空行的正则表达式:n[s| ]*r

  匹配HTML标记的正则表达式:/<(.*)>.*|<(.*) />/

  匹配首尾空格的正则表达式:(^s*)|(s*$)

  匹配Email地址的正则表达式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*

\d 匹配任何一个数字,即[0-9]

\d+表示1个以上的数字

\d*标示0个或多个数字

\s 表示分隔符,包括空格、制表符和换行符

\s* 0个或多个分隔符

\w 表示字母、数字和下划线,这里还包括Unicode字符,不同的语言里有些不同

\w{4} 表示4个非空白字符

. 表示任何一个字符,不包括换行符

.* 表示任何多个字符,当然也不包括换行符了

^([0-9]) 表示数字开头

([0-9])$ 表示数字结尾

([0-9A-Za-z]) 表示数字字母

| 表示或的关系,如\d|\w 表示数字或字母

(.|[\r\n])* 表示任何多个字符,包括换行符,贪婪扫描

(.|[\r\n])*? 表示任何多个字符,包括换行符,懒惰扫描

2.常见操作

①.用于拆分,返回一个拆分后的字符串数组

    NSString *searchString = @ "This is neat." ;
    NSString *regexString  = @"//s+" ;
    NSArray  *splitArray   = NULL;
    splitArray = [searchString componentsSeparatedByRegex:regexString];
    // splitArray == { @"This", @"is", @"neat." }
    NSLog(@"splitArray: %@" , splitArray);  

    NSString *searchString = @"This is neat.";
    NSString *regexString  = @"//s+";
    NSArray  *splitArray   = NULL;
    splitArray = [searchString componentsSeparatedByRegex:regexString];
    // splitArray == { @"This", @"is", @"neat." }
    NSLog(@"splitArray: %@", splitArray);

②.用于邮箱验证

//减号方法:
- (BOOL) validateEmail
{
    NSString *emailRegex = @"[A-Z0-9a-z._%+-][email protected][A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";
    NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex];
    return [emailTest evaluateWithObject:self];
}

③.手机号码验证

+ (BOOL) validateMobile:(NSString *)mobile
{
    //手机号以13, 15,18开头,八个 \d 数字字符
    NSString *phoneRegex = @"^((13[0-9])|(15[^4,\\D])|(18[0,0-9]))\\d{8}$";
    NSPredicate *phoneTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",phoneRegex];
    return [phoneTest evaluateWithObject:mobile];
}
<pre name="code" class="objc">+ (BOOL) validateMobile
{
    //手机号以13, 15,18开头,八个 \d 数字字符
    NSString *phoneRegex = @"^((13[0-9])|(15[^4,\\D])|(18[0,0-9]))\\d{8}$";
    NSPredicate *phoneTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",phoneRegex];
    return [phoneTest evaluateWithObject:self];
}

④.车牌号验证

+ (BOOL) validateCarNo:(NSString *)carNo
{
    NSString *carRegex = @"^[\u4e00-\u9fa5]{1}[a-zA-Z]{1}[a-zA-Z_0-9]{4}[a-zA-Z_0-9_\u4e00-\u9fa5]$";
    NSPredicate *carTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",carRegex];
    NSLog(@"carTest is %@",carTest);
    return [carTest evaluateWithObject:carNo];
}

⑤.用户名验证

+ (BOOL) validateUserName:(NSString *)name
{
    NSString *userNameRegex = @"^[A-Za-z0-9]{4,20}+$";
    NSPredicate *userNamePredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",userNameRegex];
    BOOL B = [userNamePredicate evaluateWithObject:name];
    return B;
}

⑥.密码验证

+ (BOOL) validatePassword:(NSString *)passWord
{
    NSString *passWordRegex = @"^[a-zA-Z0-9]{6,20}+$";
    NSPredicate *passWordPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",passWordRegex];
    return [passWordPredicate evaluateWithObject:passWord];
}

⑦.身份证号验证

+ (BOOL) validateIdentityCard: (NSString *)identityCard
{
    BOOL flag;
    if (identityCard.length <= 0) {
        flag = NO;
        return flag;
    }
    NSString *regex2 = @"^(\\d{14}|\\d{17})(\\d|[xX])$";
    NSPredicate *identityCardPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex2];
    return [identityCardPredicate evaluateWithObject:identityCard];
}

⑨.银行卡号验证

<span style="font-size:12px;">
+ (BOOL) validateBankCardNumber: (NSString *)bankCardNumber
{
    BOOL flag;
    if (bankCardNumber.length <= 0) {
        flag = NO;
        return flag;
    }
    NSString *regex2 = @"^(\\d{15,30})";
    NSPredicate *bankCardPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex2];
    return [bankCardPredicate evaluateWithObject:bankCardNumber];
}

</span>

⑩month月验证

<span style="font-size:12px;">
+ (BOOL) validateMonth: (NSString *)month
{
    BOOL flag;
    if (!month.length == 2) {
        flag = NO;
        return flag;
    }
    NSString *regex2 = @"(^(0)([0-9])$)|(^(1)([0-2])$)";
    NSPredicate *monthPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex2];
    return [monthPredicate evaluateWithObject:month];
}

</span>

①①.year年验证

<span style="font-size:12px;">
+ (BOOL) validateYear: (NSString *)year
{
    BOOL flag;
    if (!year.length == 2) {
        flag = NO;
        return flag;
    }
    NSString *regex2 = @"^([1-3])([0-9])$";
    NSPredicate *yearPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex2];
    return [yearPredicate evaluateWithObject:year];
}

</span>

①②.昵称验证.

<span style="font-size:12px;">
+ (BOOL) validateNickname:(NSString *)nickname
{
    NSString *nicknameRegex = @"([\u4e00-\u9fa5]{2,5})(·[\u4e00-\u9fa5]{2,5})*";
    NSPredicate *passWordPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",nicknameRegex];
    return [passWordPredicate evaluateWithObject:nickname];
}</span>

点击打开原文地址:原文1 原文2:原文2

时间: 2024-10-06 10:39:07

ios 正则表达式的相关文章

iOS正则表达式判断密码

iOS 正则表达式 不能全部为数字 不能全部为字母 必须包含字母和数字 6-20位 -(BOOL)checkPassWord { //6-20位数字和字母组成 NSString *regex = @"^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,20}$"; NSPredicate * pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex]; if ([p

iOS 正则表达式(二)

下面介绍的是iOS的一个第三方库,RegexKitLite .使用起来是非常方便的,不过是2008年写的,MAC模式,我们在使用的时候,需要作两步操作. RegexKitLite 导入 我们在githud中下载下来,将RegexKitLite.h 和 RegexKitLite.m 添加到项目中. 1.让RegexKitLite支持ARC,使用 -fno-objc-arc 标记即可. 2.导入libicucore.tbd动态库 RegexKitLite 使用 1.单个正则符合匹配,返回匹配集合 (

iOS 正则表达式使用的三种方式&amp;语法

一.正则表达式定义 正则表达式:又称规则表达式(英语:Regular Expression,在代码中常简写为regex.regexp或RE,是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合,组成一个"规则字符串",这个"规则字符串"用来表达对字符串的一种过滤逻辑. 二.特点 灵活性.逻辑性和功能性非常的强 可以迅速地用极简单的方式达到字符串的复杂控制 对于刚接触的人来说,比较晦涩难懂. 三.基本语法 选择 | 竖直分隔符代表选择.例

iOS正则表达式运用

一.什么是正则表达式 正则表达式,又称正规表示法,是对字符串操作的一种逻辑公式.正则表达式可以检测给定的字符串是否符合我们定义的逻辑,也可以从字符串中获取我们想要的特定部分.它可以迅速地用极简单的方式达到字符串的复杂控制. 二.正则表达式的语法 看一个过滤纯数字的例子 - (BOOL)validateNumber:(NSString *) textString { NSString* [email protected]"^[0-9]+$"; NSPredicate *numberPre

iOS正则表达式解读

一.什么是正则表达式 正则表达式,又称正规表示法,是对字符串操作的一种逻辑公式.正则表达式可以检测给定的字符串是否符合我们定义的逻辑,也可以从字符串中获取我们想要的特定部分.它可以迅速地用极简单的方式达到字符串的复杂控制. 二.正则表达式的语法 看一个过滤纯数字的例子 - (BOOL)validateNumber:(NSString *) textString { NSString* [email protected]"^[0-9]+$"; NSPredicate *numberPre

iOS正则表达式 验证用户名密码

- (BOOL)checkUsername { NSString * regex = @"^[A-Za-z0-9]{1,15}$"; //正则表达式 NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex]; //Cocoa框架中的NSPredicate用于查询,原理和用法都类似于SQL中的where,作用相当于数据库的过滤取 BOOL isMatch = [pre

ios正则表达式

#pragma mark -验证手机号码的正则表达式 - (BOOL)checkTel:(NSString *)str { if ([str length] == 0) { UIAlertView *alert  = [[UIAlertView alloc] initWithTitle:@"手机号不能为空" message:nil delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil, nil]; [a

iOS 正则表达式判断手机号,邮箱等

1 #import "NSString+RegexCategory.h" 2 3 @implementation NSString (RegexCategory) 4 #pragma mark - 正则相关 5 - (BOOL)isValidateByRegex:(NSString *)regex{ 6 NSPredicate *pre = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex]; 7 r

iOS正则表达式NSRegularExpression

有时候我们可能想从网页上自己想要的数据摘取下来,此时一般我们可以使用正则表达式(NSRegularExpression).扫描器(NSScanner)两种途径解析. 在使用正则表达式的时候,如果需要解析HTML网页源码,使用NSRegularExpression的matchesInString方法解析可能只会返回一个结果,这是由于遇到换行符所导致,此时只需将.替换成[\\s\\S],小括号的意思是取出中间括号内匹配到的部分,其NSRange值将会在结果中返回.返回的result(NSTextCh