我正在工作的文本字段验证和困惑如何验证文本字段必须包含至少1个字符从所有以下类别:英文大写字符(A - Z)。英文小写字符(a - z)。
发布于 2019-05-28 19:21:36
看一下CharacterSets (描述为here)
您可以创建各种字符集(例如小写字母),并测试字符串是否包含与所述字符集匹配的内容。
因此,您可以创建一个返回布尔值的函数。该函数根据两个CharacterSet检查字符串,只有当这两个都在字符串中时,该函数才返回true。
像这样的东西
func validate(string: String) -> Bool {
let lowercase = CharacterSet.lowercaseLetters
let uppercase = CharacterSet.uppercaseLetters
let lowercaseRange = string.rangeOfCharacter(from: lowercase)
let uppercaseRange = string.rangeOfCharacter(from: uppercase)
return lowercaseRange != nil && uppercaseRange != nil
}
validate(string: "Hello") //returns true
validate(string: "hello") //returns false
validate(string: "HELLO") //returns false查看来自NSHipster的this article了解更多信息。
发布于 2019-05-28 19:25:40
图片来源:TextField uppercase and lowercase validation
以下是条件的regext :-至少8个字符,1个大写字母和1个数字。
^(?=.a-z)(?=.A-Z)(?=.\d)(?=.[$@$!%?&])[A-Za-z\d$@$!%?&]{8,}
extension String {
func isValidPassword() -> Bool {
let regularExpression = "^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[$@$!%*?&])[A-Za-z\\d$@$!%*?&]{8,}"
let passwordValidation = NSPredicate.init(format: "SELF MATCHES %@", regularExpression)
return passwordValidation.evaluate(with: self)
}
}
//Example 1
var password = "@Abcdef011" //string from UITextField (Password)
password.isValidPassword() // -> true
//Example 2
var password = "wer011" //string from UITextField
password.isValidPassword() // -> false发布于 2019-05-28 19:28:12
func isValidPassword(testStr:String?) -> Bool {
guard testStr != nil else { return false }
// at least one uppercase,
// at least one lowercase
// 8 characters total
let passwordTest = NSPredicate(format: "SELF MATCHES %@", "(?=.*[A-Z])(?=.*[a-z]).{8,}")
return passwordTest.evaluate(with: testStr)
}https://stackoverflow.com/questions/56340772
复制相似问题