2017-09-11 65 views
-1

我嘗試包括」符號正則表達式我不能包括「符號正則表達式

我用這個功能

func matches(for regex: String, in text: String) -> [String] { 

    do { 
     let regex = try NSRegularExpression(pattern: regex) 
     let results = regex.matches(in: text, 
            range: NSRange(text.startIndex..., in: text)) 
     return results.map { 
      text.substring(with: Range($0.range, in: text)!) 
     } 
    } catch let error { 
     print("invalid regex: \(error.localizedDescription)") 
     return [] 
    } 
} 

,這正則表達式

let matched = matches(for: "^[‘]|[0-9]|[a-zA-Z]+$", in: string) 

當我搜索我可以找到數字和英文字母

但不是'符號

+0

等都不是代碼編寫服務 – Zoe

+0

在你經常expession你有'「'(左單引號)。在你的文本中,你有'''(撇號)。您看得出來差別嗎?另外,我相信你應該在你的表達式中使用圓括號,否則'+'只適用於'[a-zA-Z]'組。 – Sulthan

+0

@Sulthan我試過'和' 都不起作用 – Basil

回答

3

我猜你真正想要的是這樣的:

"['0-9a-zA-Z]+" 

請注意,我已經刪除了^(文本開始)和$(文本結束)字符,因爲那麼你的整個文本必須匹配。

我已經合併了這些組,因爲否則就不能匹配文本作爲整個單詞。你會得到單獨的撇號,然後單詞。

我已將字符更改爲正確的'字符。簡單撇號的自動轉換是由iOS 11 Smart標點符號引起的。你可以將其關閉在使用輸入:

input.smartQuotesType = .no 

https://developer.apple.com/documentation/uikit/uitextinputtraits/2865931-smartquotestype

+0

當我改變鍵盤阿拉伯語在iPhone 然後用你的代碼工作撇號符號o它,但如果我使用英文鍵盤上的撇號符號 它不會識別它 – Basil

+1

@Basil你可能有一些autocorrection開啓。如果您遇到問題,請使用兩個字符。 – Sulthan

+0

感謝您的時間,正如您所說,當我關閉時 **智能標點符號** 它在英文鍵盤上被識別出來 我可以在我的應用程序中打開它嗎? ,因爲我不關心用戶,如果他們是**智能標點符號** – Basil