国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Swift > 正文

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

2020-03-09 17:42:43
字體:
供稿:網(wǎng)友

什么是正則表達(dá)式

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

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

封裝

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

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 =~ : ATPrecedenceprecedencegroup 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(默認(rèn)就為 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ī)則") }

注意

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

總結(jié)

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


注:相關(guān)教程知識閱讀請移步到swift教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 陆川县| 如东县| 泰安市| 和政县| 清流县| 汝阳县| 格尔木市| 吴江市| 阿鲁科尔沁旗| 浦东新区| 乌审旗| 永和县| 依兰县| 临沂市| 拜城县| 开平市| 河曲县| 泸溪县| 孙吴县| 璧山县| 吉木萨尔县| 漳州市| 读书| 亚东县| 独山县| 磐石市| 吉木乃县| 南城县| 新竹市| 富民县| 湖州市| 织金县| 墨江| 赫章县| 吴堡县| 咸阳市| 安丘市| 收藏| 武宣县| 保定市| 漠河县|