最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

swift中自定義正則表達式運算符=~詳解

 更新時間:2017年12月22日 08:34:03   作者:Inlight先森  
這篇文章主要給大家介紹了關(guān)于swift中自定義正則表達式運算符=~的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。

什么是正則表達式?

正則表達式,又稱正規(guī)表示法、常規(guī)表示法(英語:Regular Expression,在代碼中常簡寫為regex、regexp或RE),計算機科學的一個概念。正則表達式使用單個字符串來描述、匹配一系列符合某個句法規(guī)則的字符串。在很多文本編輯器里,正則表達式通常被用來檢索、替換那些符合某個模式的文本。

swift 至今并沒有在語言層面上支持正則表達式,可能在開發(fā)app時正則表達式使用的場景并不多。

封裝

在 Cocoa 中我們可以使用 NSRegularExpression 來做正則匹配,所以我們在 NSRegularExpression 的基礎(chǔ)上封裝一個 RegularExpHelper 配匹一個字符串是否符合某個正則表達式。

struct RegularExpHelper {
 let RegularExp: NSRegularExpression 
 init(_ pattern: String) throws {
  try RegularExp = NSRegularExpression(pattern: pattern, options: .caseInsensitive)
 } 
 func match(inpuut: String) -> Bool {
  let matches = RegularExp.matches(in: inpuut, options: [], range: NSMakeRange(0, inpuut.count))
  return matches.count > 0
 }
}

自定義 =~

有了封裝好的 RegularExpHelper,我們就可以方便的自定義運算符了。

infix operator =~ : ATPrecedence
precedencegroup ATPrecedence {
 associativity: none
 higherThan: AdditionPrecedence
 lowerThan: MultiplicationPrecedence
}
func =~ (input: String, RegularExp: String) -> Bool {
 do {
  return try RegularExpHelper(RegularExp).match(inpuut: input)
 } catch _ {
  return false
 }
}

運算符定義

  • infix 表示定義一個中位操作符(前后都是輸入)
  • prefix 表示定義一個前位操作符(前是輸入)
  • postfix 表示定義一個后位操作符(后是輸入)

associativity 結(jié)合律

即多個同類的操作符順序出現(xiàn)時的計算順序

  • left (從左往右的順序)
  • right(從右往左的順序)
  • none(默認就為 none,不會再結(jié)合)

優(yōu)先級

  • higherThan 優(yōu)先級高于 AdditionPrecedence 這個是加法的類型
  • lowerThan 優(yōu)先級低于 MultiplicationPrecedence 乘除

然后我們就可以使用了

 if "88888888@qq.com" =~ "^([a-z0-9_\\.-]+)@([\\da-z\\.-]+)\\.([a-z\\.]{2,6})$" {
  print("符合郵箱規(guī)則")
 } else {
  print("不符合郵箱規(guī)則")
 }

注意

  • 使用正則表達式字符串時注意轉(zhuǎn)義字符的使用。
  • swift 的操作符是不能定義在局部域中的,因為操作符是需要在全局范圍內(nèi)使用的。
  • 重載和自定義操作符存在很多風險,使用前請多問問自己是否真的需要這么做!

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • swift實現(xiàn)隨機背景色

    swift實現(xiàn)隨機背景色

    這篇文章主要為大家詳細介紹了swift實現(xiàn)隨機背景色,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Swift實現(xiàn)堆排序算法的代碼示例

    Swift實現(xiàn)堆排序算法的代碼示例

    堆排序(HeapSort)是一樹形選擇排序,堆排序的時間復雜度O(nlogn),這里我們來看一下Swift實現(xiàn)基堆排序算法的代碼示例,首先對堆排序算法的基本概念作一個了解:
    2016-06-06
  • 10個驚艷的Swift單行代碼

    10個驚艷的Swift單行代碼

    這篇文章主要為大家分享了10個驚艷的Swift單行代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • Swift data范圍截取問題解決方案

    Swift data范圍截取問題解決方案

    這篇文章主要介紹了Swift data范圍截取問題解決方案,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-09-09
  • Swift使用transform 實現(xiàn)重復平移動畫效果

    Swift使用transform 實現(xiàn)重復平移動畫效果

    這篇文章主要介紹了Swift使用transform 實現(xiàn)重復平移動畫效果,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-07-07
  • switch多選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)示例詳解

    switch多選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)示例詳解

    這篇文章主要介紹了switch多選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu),本文結(jié)合示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-12-12
  • Swift數(shù)組詳細用法解析

    Swift數(shù)組詳細用法解析

    這篇文章主要為大家詳細介紹了Swift數(shù)組詳細用法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • Swift中循環(huán)語句中的轉(zhuǎn)移語句 break 和 continue

    Swift中循環(huán)語句中的轉(zhuǎn)移語句 break 和 continue

    這篇文章主要介紹了Swift中循環(huán)語句中的轉(zhuǎn)移語句 break 和 continue,本文通過實例代碼給大家介紹的非常詳細,需要的的朋友參考下
    2016-12-12
  • swift中可選值?和!使用的方法示例

    swift中可選值?和!使用的方法示例

    這篇文章主要給大家介紹了關(guān)于swift中可選值?和!使用的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2017-11-11
  • Swift3遷移至Swift4可能遇到的問題小結(jié)

    Swift3遷移至Swift4可能遇到的問題小結(jié)

    每當看到新的編程語言我總是會有相當大的興趣,所以下面這篇文章主要給大家介紹了關(guān)于Swift3遷移至Swift4可能遇到的問題,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面來一起學習學習吧
    2018-06-06

最新評論

泰州市| 大安市| 安平县| 蒲城县| 冀州市| 沅江市| 集安市| 无棣县| 共和县| 孙吴县| 禹州市| 云林县| 河北区| 合江县| 富平县| 永新县| 山东省| 井冈山市| 大安市| 郧西县| 砚山县| 宜城市| 定兴县| 英吉沙县| 古交市| 上虞市| 乌拉特中旗| 赤峰市| 鲁甸县| 泰兴市| 南澳县| 巨鹿县| 五华县| 化德县| 隆回县| 永年县| 长兴县| 淮北市| 怀仁县| 普兰县| 拜城县|