我想檢查一個字串是否與一個精確的正則運算式匹配;
目前,即使被比較的字串不是完全匹配,我的函式也回傳 true。
模式字串: "([0-9],[0-9])"
例如,
(1,1)有效
(5,4)有效
只有以這種格式輸入的字串才是有效的 IE Bracket Number 逗號數字括號(無空格)
IE
[5,5]無效
{5,5]無效。
5,5無效
我用來檢查的代碼:
let stringToCheck = "[5,5]"
return stringToCheck.range(of: "([0-9],[0-9])", options: .regularExpression, range: nil, locale: nil) != nil
任何人都可以幫助我調整它以檢查符合我的模式的完全匹配嗎?
謝謝!
uj5u.com熱心網友回復:
你需要兩件事:
- 轉義括號
- 添加錨點是因為在當前代碼中,正則運算式可以匹配字串的一部分。
您可以因此使用
stringToCheck.range(of: #"^\([0-9],[0-9]\)\z"#, options: .regularExpression, range: nil, locale: nil) != nil
請注意#兩端的字符,它們允許使用單個反斜杠進行轉義。
詳情:
^- 字串的開始\(- 一個(字符[0-9]- 單個 ASCII 數字(在后面添加]以匹配一個或多個數字),- 逗號[0-9]- 單個 ASCII 數字(在后面添加]以匹配一個或多個數字)\)- 一個)字符\z- 字串的末尾(如果字串中不能出現換行符,$就足夠了)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/372526.html
上一篇:單擊按鈕打開記錄器
