美高梅开户-美高梅官方网站开户

您的位置:美高梅开户 > 美高梅开户 > 正则表达式详解,iOS正则表达式

正则表达式详解,iOS正则表达式

发布时间:2019-09-12 02:53编辑:美高梅开户浏览(54)

    语言:Swift 4.0.3

    正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。^ 指出一个字符串的开始$指出一个字符串的结束"^iOS" 以iOS开头"iOS$" 以iOS结尾"^apple$" 开始和结尾都是apple的字符串,这个是唯一的,实际上就是apple"apple" 包含apple* , ,? 重复出现的次数。 ? 0~1; 1~n; * 0~n"ab*"一个a后面跟着0~n个b"ab ":一个a后面跟着至少一个b"ab?":一个a后面跟着0~1个b"a?b $":末尾有01个a跟着1n个b{} 表示重复的具体范围。"ab{4}" 一个a跟着4b"ab{1,}" 一个a跟着至少1个b"ab{3,5}" 一个a跟着3~5个b*可以用{0,}表示, 可以用{1,}表示,?可以用{0,1}表示| “或”操作:"a|b" 一个字符串里有a或b"ef" aef或bcdef" c" 一串a和b混合的字符串后面跟一个c;[ ]表示在括号内的众多字符中,选择1-n个括号内的符合语法的字符作为结果"[ab]"美高梅开户 , 一个a或b(相当于"a|b");"[a-d]"a到d中的一个(相当于"a|b|c|d"或者"[abcd]""^[a-zA-Z]" 以字母开头"[0-9]a" a前有一位的数字"[a-zA-Z0-9]$" 以一个字母或数字结束. 任意字符"a.[a-z]" a后面跟一个任意字符和一个小写字母"^.{5}$" 长度为5的字符串"1" 两个连续任意字符"1{2}" 三个个连续任意字符在方括号里用^表示不希望出现的字符,^应在方括号里的第一位。"@[^a-zA-Z]@"表示两个@中不应该出现字母"d" 一个数字字符"D" 一个非数字字符"w " 包括下划线的任何单词字符"W" 匹配任何非单词字符iOS中书写正则表达式,碰到转义字符,多加一个

    正则表达式是描述一些复杂逻辑的字符串的一种工具,在app开发中,常见于表单逻辑判断,如:手机号码,密码,身份证,邮箱等,本篇文章讲解一下在iOS开发中怎么使用正则表达式来处理表单逻辑。

    正则表达式在IOS开发中的应用一、根据正则表达式创建NSRegularExpression对象初始化方法<pre>public init(pattern: String, options: NSRegularExpression.Options = []) throws</pre>其中,pattern是正则表达式,对于option参数,在oc中它是一个枚举,swift中它是结构体options中的属性<pre>public struct Options : OptionSet {

    正则表达式怎么写推荐:正则表达式30分钟入门,这篇文章主要是记录iOS开发中怎么使用正则表达式。

     public init(rawValue: UInt) public static var caseInsensitive: NSRegularExpression.Options { get } public static var allowCommentsAndWhitespace: NSRegularExpression.Options { get } public static var ignoreMetacharacters: NSRegularExpression.Options { get } public static var dotMatchesLineSeparators: NSRegularExpression.Options { get } public static var anchorsMatchLines: NSRegularExpression.Options { get } public static var useUnixLineSeparators: NSRegularExpression.Options { get } public static var useUnicodeWordBoundaries: NSRegularExpression.Options { get }}
    

    NSRegularExpression 在iOS中表现为迭代器方法,意思就是每当匹配到正确的匹配法则就会返回一部分给调用者。我使用NSRegularExpression提供的5中方法演示一下:

    </pre><pre>caseInsensitive //不区分字母大小写allowCommentsAndWhitespace //忽略掉正则表达式中的空格和#号之后的字符ignoreMetacharacters //将正则表达式整体作为字符串处理dotMatchesLineSeparators //允许.匹配任何字符,包括换行符anchorsMatchLines //允许^和$符号匹配行的开头和结尾useUnixLineSeparators //设置n为唯一的行分隔符,否则所有的都有效。useUnicodeWordBoundaries //使用Unicode TR#29标准作为词的边界,否则所有传统正则表达式的词边界都有效</pre>

    1. numberOfMatches

    返回字符串中指定正则的匹配数,numberOfMatches通过你的调用会返回你指定的字符串中匹配到的匹配数量,具体我们看代码:

    let string = "12345a"let pattener = "[0-9]"let range = NSMakeRange(0, string.count)let result = try NSRegularExpression(pattern: pattener, options: [])let results = result.numberOfMatches(in: string, options: [], range: range)print输出: 5
    

    我们定义了字符串"12345a",我们指定了匹配法则[0-9]就是说我们只仅仅匹配0-9的数字,所以就是匹配到了5个字符,numberOfMatches就这样用,我们然后再进行处理:

    if results == string.count { print} else { print}输出:false
    

    这样我们就可以知道我们所指定的字符串是否是NSRegularExpression能匹配正确的字符串,对于[0-9]正则而而言"12345a"显然不是的。

    二、执行查询操作1、以block的形式返回查询结果<pre>open func enumerateMatches(in string: String, options: NSRegularExpression.MatchingOptions = [], range: NSRange, using block: (NSTextCheckingResult?, NSRegularExpression.MatchingFlags, UnsafeMutablePointer<ObjCBool>) -> Swift.Void)</pre>参数string是待查询的字符串,options的参数如下:<pre>public struct MatchingOptions : OptionSet {

    本文由美高梅开户发布于美高梅开户,转载请注明出处:正则表达式详解,iOS正则表达式

    关键词: 美高梅开户