我用的正则表达式
今天有部分功能需要用到正则表达式,去搜索我的需求规则“开头不为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次以上,但尽可能少重复
以后有用到的再往上加