今天有部分功能需要用到正则表达式,去搜索我的需求规则“开头不为0,整数”,试了很多都不实用,感叹之余,只能自己研究写出合适的规则。由于用户输入可能一直输入00000再输入123,所以我就需要截取出来开头不为0的整数。
一、开头不为0,整数
#pragma mark - 正则表达式,判断价格- (NSString*)checkNumber:(NSString*) Number{// 制定规则 NSString* pattern = @"[1-9][0-9]*?$";
/* 参数options NSRegularExpressionCaseInsensitive 匹配规则中的字符串 忽略大小写 NSRegularExpressionAllowCommentsAndWhitespace 忽略空白和# 前缀在匹配规则 NSRegularExpressionIgnoreMetacharacters 把整个字符串作为 匹配规则 NSRegularExpressionDotMatchesLineSeparators 允许 . 来匹配任意字符 包括 换行符 NSRegularExpressionAnchorsMatchLines 允许^ $ 来匹配 开始和结束 NSRegularExpressionUseUnixLineSeparators 把/n作为分隔符 NSRegularExpressionUseUnicodeWordBoundaries Use Unicode TR#29 to specify word boundaries (otherwise, traditional regular expression word boundaries are used). */
NSRegularExpression *regular= [NSRegularExpression regularExpressionWithPattern:pattern options:0 error:nil];// 结果 NSTextCheckingResult *result = [regular firstMatchInString:Number options:NSMatchingReportCompletion range:NSMakeRange(0, Number.length)]; NSString* str = [Number substringWithRange:result.range]; return str; }
之前还用过一个判断手机号码的,也贴一下
二、判断是不是手机号
#pragma mark - 正则表达式,判断手机号码- (NSTextCheckingResult*)checkTelNumber:(NSString*) telNumber{ NSString* pattern = @"^1+[3578]+\\d{9}"; NSRegularExpression *regular= [NSRegularExpression regularExpressionWithPattern:pattern options:0 error:nil]; NSTextCheckingResult *result = [regular firstMatchInString:self.phoneNumberTF.text options:NSMatchingReportCompletion range:NSMakeRange(0, self.phoneNumberTF.text.length)]; return result; }
三、还有其他需要的查不到、自己可以想想怎么写
在编写处理字符串的程序时,经常会有查找符合某些复杂规则的字符串的需要。正则表达式就是用于描述这些规则的工具。换句话说,正则表达式就是记录文本规则的代码正则表达式是对字符串操作的一种逻辑公式,用事先定义好的一些特定字符、及这些特定字符的组合,组成一个"规则字符串",这个"规则字符串"用来表达对字符串的一种过滤逻辑。-在很多文本编辑器里,可以使用正则表达式进行检索,Xcode同样支持正则表达式!-几乎所有的程序设计语言都支持正则表达式,例如:OC,java,c#,python,js等。0> 匹配(pattern) 匹配pattern并获取这一匹配,所获取的匹配可以从产生的Matches集合得到1> 常用元字符--------------------------------------------------------------------------------. 匹配除换行符以外的任意字符\w 匹配字母或数字或下划线或汉字\s 匹配任意的空白符(空格、TAB\t、回车\r \n)\d 匹配数字^ 匹配字符串的开始$ 匹配字符串的结束\b 匹配单词的开始或结束2> 常用反义符--------------------------------------------------------------------------------\W 匹配任意不是字母,数字,下划线,汉字的字符\S 匹配任意不是空白符的字符\D 匹配任意非数字的字符\B 匹配不是单词开头或结束的位置[^x] 匹配除了x以外的任意字符[^aeiou] 匹配除了aeiou这几个字母以外的任意字符3> 集合--------------------------------------------------------------------------------[xyz] 字符集合[^xyz] 负值字符集合[a-z] 字符范围[^a-z] 负值字符范围4> 常用限定符--------------------------------------------------------------------------------* 重复零次或更多次+ 重复一次或更多次? 重复零次或一次{n} 重复n次{n,} 重复n次或更多次{n,m} 重复n到m次5> 贪婪和懒惰--------------------------------------------------------------------------------*? 重复任意次,但尽可能少重复*+ 重复1次或更多次,但尽可能少重复?? 重复0次或1次,但尽可能少重复{n,m}? 重复n到m次,但尽可能少重复{n,}? 重复n次以上,但尽可能少重复
以后有用到的再往上加