2015-12-25 93 views
1

我想測試用戶輸入,看看整個輸入是否匹配下面的正則表達式。我如何使用Swift做到這一點?斯威夫特的正則表達式

[a-zA-Z][email protected][a-zA-Z]+.[a-zA-Z]

+1

分享你正在嘗試的代碼片段,也要確保你在'.swift'文件中編寫了一個swift代碼......如果你想使用Objective-C,你應該使用橋接頭。 – Sana

+0

我只是決定讓這個問題更一般化。 – fossdeep

+1

[RegEx in Swift?]可能重複(http://stackoverflow.com/questions/25071444/regex-in-swift) – Identity1

回答

4

看起來你正試圖驗證電子郵件地址。試試這個:

let test = "[email protected]" 

do { 
    let regex = try NSRegularExpression(pattern: "[a-zA-Z0-9][email protected][a-zA-Z0-9]+.[a-zA-Z]", options: []) 
    if regex.firstMatchInString(test, options: [], range: NSMakeRange(0, test.utf16.count)) != nil { 
     print("matched") 
    } else { 
     print("not matched") 
    } 
} catch let error as NSError { 
    print(error.localizedDescription) 
} 

NSRegularExpression依然搭載了很多它背後的ObjC遺產,因此它是相當冗長使用。

+0

這有效。謝謝!但是爲[]設置選項意味着什麼?我怎麼知道?我嘗試過使用谷歌搜索,並查看蘋果文檔,但我找不到任何信息。 – fossdeep

+1

'[]'是一個空集。 '選項:[]'表示「無選項」。它相當於ObjC中的'options:nil'。檢查文檔。如果'option'參數符合'OptionSetType',則可以使用一個步驟而不是按位或''。文檔:https://developer.apple.com/library/mac/documentation/Swift/Reference/Swift_OptionSetType_Protocol/ –

+0

其實,如果我想驗證整個用戶輸入,它將匹配「[email protected]」,但也會匹配「sometext [email protected]」正則表達式是否需要改進,或者我應該使用不同的選項? – fossdeep