⼀个正则表达式测试(只可输⼊中⽂、字母和数字)
⾸先举⼀个例⼦:
匹配9-15个由字母/数字组成的字符串的正则表达式:
NSString * regex = @"^[A-Za-z0-9]{9,15}$";
NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];
BOOL isMatch = [pred ];
假如是在OC⾥⽤,⼀定要注意细节。
列出我在项⽬中⽤到的代码:
NSString *regex = @"[a-zA-Z\u4e00-\u9fa5][a-zA-Z0-9\u4e00-\u9fa5]+";
NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];
if(![pred evaluateWithObject: ])
{
/*
////此动画为弹出buttonqww
UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"提⽰" message:@"昵称只能由中⽂、字母或数字组成" delegate:self cancelButtonTitle:@"确定" otherButtonTitles: nil];        [alertView show];
return;
*/
Warning_boxes *reminderView = [[Warning_boxes alloc]init];
[self.view addSubview:reminderView];
reminderView. = @"昵称只能由中⽂、字母或数字组成";
[reminderView animationStart];
[reminderView release];
/*
//此动画为在顶上显⽰⽂字
[MPNotificationView notifyWithText:@"昵称只能由中⽂、字母或数字组成"
andDuration:0.5];
*/
return;
下⼀⾏代码⾮常关键:
if(![pred evaluateWithObject: ])
这⾥有!⼀定要注意。因为和pred匹配的时候返回的是YES。所以在判断他们匹配时的情况要加!。
要学好正则的⼩伙伴,强烈推荐:
说明:正则表达式通常⽤于两种任务:1.验证,2.搜索/替换。⽤于验证时,通常需要在前后分别加上^和,以匹配整个待验证字符串;搜索/替换时是否加上此限定则根据搜索的要求⽽定,此外,也有可能要在前后加上\b⽽不是^和。此表所列的常⽤正则表达式,除个别外均未在前后加上任何限定,请根据需要,⾃⾏处理。
正则表达式提取中文字符说明正则表达式
⽹址(URL)[a-zA-z]+://[^\s]*
IP地址(IP Address)((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)
电⼦邮件(Email)\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
QQ号码[1-9]\d{4,}
HTML标记(包含内容或⾃闭合)<(.*)(.*)>.*<\/\1>|<(.*) \/>
密码(由数字/⼤写字母/⼩写字母/标点符号组成,四种都必有,8位以上)(?=^.{8,})(?=.*\d)(?=.*\W+)(?=.*[A-Z])(?=.*[a-z])(?!.*\n).*
⽇期(年-⽉-⽇)(\d{4}|\d{2})-((1[0-2])|(0?[1-9]))-(([12][0-9])|(3[01])|(0?[1-9]))
⽇期(⽉/⽇/年)((1[0-2])|(0?[1-9]))/(([12][0-9])|(3[01])|(0?[1-9]))/(\d{4}|\d{2})
时间(⼩时:分钟, 24⼩时制)((1|0?)[0-9]|2[0-3]):([0-5][0-9])
汉字(字符)[\u4e00-\u9fa5]
中⽂及全⾓标点符号(字符)[\u3000-\u301e\ufe10-\ufe19\ufe30-\ufe44\ufe50-\ufe6b\uff01-\uffee]
中国⼤陆固定电话号码(\d{4}-|\d{3}-)?(\d{8}|\d{7})
中国⼤陆⼿机号码1\d{10}
中国⼤陆[1-9]\d{5}
中国⼤陆⾝份证号(15位或18位)\d{15}(\d\d[0-9xX])?
⾮负整数(正整数或零)\d+
正整数[0-9]*[1-9][0-9]*
负整数-[0-9]*[1-9][0-9]*
整数-?\d+
⼩数(-?\d+)(\.\d+)?
⼩数(-?\d+)(\.\d+)?
说明正则表达式
不包含abc的单词\b((?!abc)\w)+\b
正则表达式:是指⼀个⽤来描述或者匹配⼀系列符合某个句法规则的字符串的单个字符串,简单说,就是我们写个模板,然后去匹配字符串。下⾯我们来看看⼀些基本的正则表达式的语法:
\:将下个字符标记为⼀个特殊的字符、⼀个原义字符、⼀个向后引⽤或者⼀个⼋进制转义符例如“\n”就是匹配⼀个换⾏符。
^:匹配开始位置,^(a)这个就匹配开头必须为a。
:匹配结束位置,(a)这个就匹配结尾必须为a。
*:匹配前⾯的⼦表达式零次或者多次,如“xu*”这个表达式就能够匹配“x”和“xuu”。
+:匹配前⾯的⼦表达式⼀次或者多次,如“xu+”这个表达式就能够匹配“xuu”和“xu”,但不能够匹配“x”,这个就是和“*”的区别。
?:匹配前⾯的⼦表达式零次或者⼀次,如“xu?”这个表达式就能够匹配“jian(guo)?”就可以匹配“jian”和“jianguo”。
{n}:n是⼀个⾮负数,匹配n次,如“guo{2}”,可以匹配“guoo”,不能匹配“guo”。
{n,}:n是⼀个⾮负数,匹配⾄少n次。
{n, m}:m、n都是⾮负数,最少匹配n次,最多匹配m次。
(pattern):匹配pattern并获取匹配结果。
(?:pattern):匹配pattern但不获取匹配结果。
x|y:匹配x或y,如“(xu|jian)guo”匹配“xuguo”或者“jianguo”。
[xyz]:字符集合,匹配所包含的任意字符。如“[abc]”可以匹配“apple”中的“a”。
[^xyz]:匹配未被包含的字符。
[a-z]:字符范围,匹配指定范围内的任意字符。
[^a-z]:匹配指定不在范围内的任意字符。
\b:匹配⼀个单词的边界,如“guo\b”可以匹配“xujianguo”中的“guo”。
\B:匹配⾮单词边界,如“jian\B”可以匹配“xujianguo”中的“jian”。
\d:匹配⼀个数字字符,等价于“[0-9]”。
\D:匹配⼀个⾮数字字符。
\f:匹配⼀个换页符。
\n:匹配⼀个换⾏符。
\r:匹配⼀个回车符。
\s:匹配任何空⽩字符
其实还有很多语法我就不⼀⼀列举了,先说这么多先
Processing math: 0%

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。