ios - TextField 电话号码或电子邮件格式验证迅速吗?
问题描述
我有一个忘记密码的文本字段,在这里用户输入手机号码或电子邮件,然后我们发送 OTP。
我正在尝试使用我的代码验证该文本字段,但它不起作用,任何人对此有一些想法,请通过以下方式找到我的代码。
它需要对 mailid 或电话号码格式有效。
if emaiTF.text == "" {
print("Enter either valid phone or email")
}else if let validphone = emaiTF.text, validphone.isValidPhone() || validphone.isValidEmail() {
print("Enter either valid phone or email")
}else{
forGotPasswordApi()
}
我的验证方法如下。
extension String {
func isValidEmail() -> Bool {
// here, `try!` will always succeed because the pattern is valid
let regex = try! NSRegularExpression(pattern: "^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$", options: .caseInsensitive)
return regex.firstMatch(in: self, options: [], range: NSRange(location: 0, length: count)) != nil
}
// vrify Valid PhoneNumber or Not
func isValidPhone() -> Bool {
let phoneRegex = "^[0-9]{10}$";
let valid = NSPredicate(format: "SELF MATCHES %@", phoneRegex).evaluate(with: phoneRegex)
return valid
}
}
解决方案
这似乎是您的输出验证中的问题。以以下方式修改您的代码以工作,请验证。
extension ViewController {
func checkValidation() {
if txtUserName.text == "" {
print("Enter either valid phone or email 1")
} else if let validphone = txtUserName.text, validphone.isValidPhone() || validphone.isValidEmail() {
print("Success")
forGotPasswordApi()
}else{
print("Enter either valid phone or email 2")
}
}
}
extension String {
func isValidEmail() -> Bool {
// here, `try!` will always succeed because the pattern is valid
let regex = try! NSRegularExpression(pattern: "^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,3})$", options: .caseInsensitive)
let valid = regex.firstMatch(in: self, options: [], range: NSRange(location: 0, length: count)) != nil
print("Email validation \(valid)")
return valid
}
// vrify Valid PhoneNumber or Not
func isValidPhone() -> Bool {
let regex = try! NSRegularExpression(pattern: "^[0-9]\\d{9}$", options: .caseInsensitive)
let valid = regex.firstMatch(in: self, options: [], range: NSRange(location: 0, length: count)) != nil
print("Mobile validation \(valid)")
return valid
}
}
推荐阅读
- java - 无法修复创建名为“springSecurityFilterChain”的 bean 的错误
- web-component - 如何在 Web 组件中获取自定义标签
- php - 防止直接访问 WordPress 中的页面
- javascript - WP5 Module Federation:共享深度导入
- typescript - 如何通过传入具有自定义值的 ConfigService 来测试 nestjs 服务?
- python - 如何制作特定(可变)对象的深拷贝?
- python - 使用我自己的最小最大值和 python 进行图像阈值处理
- python - Numpy:在两组之间找到第k个最大或最小的二维数组
- node.js - Authentication POST http://localhost:3000/api/users/register 400 (Bad Request) MERN Application
- ios - iOS - KeyValueStore 不能跨设备工作