如何在Swift3中检查UITextField输入的字符串是数字还是字符串?

3

我有一个UITextField,我们可以输入电子邮件地址或电话号码。我的问题是,是否可能在Swift3中单击按钮时检查UITextField中输入的文本是否为电话号码或电子邮件ID? 目前,我正在使用以下代码:

func isNumber(text:String)->Bool
{
    if let intVal = text.toInt()
        {return true}
    else
        {return false}
}

但它可以验证输入是否为整数。有可能知道输入是邮件地址还是电话号码吗?


可能是如何检查字符串或数字的重复问题。 - Mo Abdul-Hameed
使用正则表达式来匹配电子邮件。 - Krunal
1
如果用户输入像 +1(512)... 这样的电话号码,应该发生什么?顺便说一下,toInt() 是 Swift 1 的函数,请考虑更新。 - vadian
如果电话号码包含特定字符和数字,可以使用电话号码的正则表达式。@vadian - Krunal
1个回答

1
// Datatype specifier
enum DataType: Int {
  case Other = 0  // This can be string
  case Number = 1
  case Email = 2
}



// Validate Email
func isEmail(emailString: String) -> Bool {
    // Sample regex for email - You can use your own regex for email
    let emailRegEx = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}"
    let emailTest = NSPredicate(format:"SELF MATCHES %@", emailRegex)
    return emailTest.evaluate(with: emailString)
}


// Check Datatype
func checkDataType(text: String)-> DataType {
    if let intVal = text.toInt() {
        return DataType.Number
    } else if isEmail(emailString: text) {
       return DataType.Email
    } else {
       return DataType.Other
   }
}

// print datatype
let dataType = checkDataType(text: "Your Input String")
print("DataType = \(dataType)")

请在您的答案中添加电话号码的正则表达式。 - Freshley Kremp
为此,您需要共享要在文本字段中修复的电话号码的数字格式。例如:+1-(000)-111-222或+91-1234567890或(1234)-567-890。 - Krunal
我将需要它们每个人的共同点。 - Freshley Kremp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接