2017-07-10 7 views
-3

私はユーザーに特殊文字を使わずにユーザー名を入力する必要があるiOSアプリケーションを作成しています。フォームの検証を使用する

文字、数字、および下線のみを受け入れるようにテキストフィールドを検証する機能を作成するための支援が必要です。そして、それをサインアップボタンアクションに実装するとき、私は関数を呼び出し、検証のためにifの場合を追加したいと思います。

誰か教えてください。私は他の方法をオンラインで試みましたが、彼らは時代遅れであるように見え、何も私のために働いていませんでした。

+0

https://stackoverflow.com/questions/38933193/swift-ios-alpha-numeric-regex-that-allows-underscores-and-dashes – Spynet

+4

*」私は他の方法をオンラインで試しました "*あなたは何を試しましたか? - * "しかし、彼らは時代遅れのようだ" *なぜ?例? - * "何も私のために働かなかった" *は役に立たない記述です。どのように "うまくいかない"のですか? –

+0

英数字とアンダースコアを含むNSCharacterSetを作成します。https://stackoverflow.com/questions/2767675/nscharacterset-how-do-i-add-to-alphanumericcharacterset-text-restrictionその後、各文字の呼び出しでは、myCharacterSet。 characterIsMember(myChar) ' –

答えて

0

これを解決するためにregexを使用することができます。

あなただけの文字、数字、アンダースコアと他には何の完全な文字列をしたいので、この正規表現は十分でしょう。

^[\w]+$ 

あなたは、このようなコードで記述することができます。

let regex = try! NSRegularExpression(pattern: "^[\\w]+$", options: []) 
if regex.firstMatch(in: yourTextField.text!, options: [], range: NSRange(location: 0, length: yourTextField.text!.characters.count)) != nil { 
    // the string is valid 
} 
+0

ありがとうございます。どのように私は最低5の文字を最大10に制限するのですか? – KingJulian

+0

@KingJulianは '+'を '{5,10}'に置き換えます – Sweeper

0
func checkUsername(str: String) -> Bool 
{ 
    do 
{ 
    let regex = try NSRegularExpression(pattern: "^[0-9a-zA-Z\\_]{7,18}$", options: .CaseInsensitive) 
    if regex.matchesInString(str, options: [], range: NSMakeRange(0, str.characters.count)).count > 0 {return true} 
    } 
catch {} 
return false 
} 
0

スウィフト3.0で試してみる

function va lidation(strValueに:文字列) - >ブール{

let aSet = NSCharacterSet(charactersIn:"^[0-9a-zA-Z\\_]{7,18}$").inverted 
    let compSepByCharInSet = string.components(separatedBy: aSet) 
    let numberFiltered = compSepByCharInSet.joined(separator: "") 
    return string == numberFiltered 

} 
関連する問題