Я пытаюсь создать метод, который находит, содержит ли строка номер, букву верхнего регистра и специальные символы, используя регулярные выражения, как показано нижеПроверьте, содержит ли строка, по крайней мере, букву upperCase, цифру или специальный символ в Swift?
func checkTextSufficientComplexity(var text : String) -> Bool{
let capitalLetterRegEx = "[A-Z]+"
var texttest = NSPredicate(format:"SELF MATCHES %@", capitalLetterRegEx)
var capitalresult = texttest.evaluateWithObject("AniP")
println("\(capitalresult)")
let numberRegEx = "[0-9]+"
var texttest1 = NSPredicate(format:"SELF MATCHES %@", numberRegEx)
var numberresult = texttest1.evaluateWithObject(text)
println("\(numberresult)")
let specialCharacterRegEx = "[.*&^%$#@()/]+"
var texttest2 = NSPredicate(format:"SELF MATCHES %@", numberRegEx)
var specialresult = texttest2.evaluateWithObject(text)
println("\(specialresult)")
return capitalresult && numberresult && specialresult
}
Проблема заключается ниже регулярное выражение [AZ] + возвращает истину только для AVATAR и возвращает false для Avatar. Я хочу, чтобы мое регулярное выражение возвращало true, если оно содержит хотя бы одну UpperCase в String.
Я думаю, что 'evaluateWithObject' пытается сопоставить всю строку. Попробуйте использовать что-то вроде этого: '^. *? [A-Z]. *? $'. – npinti
Я didnot получить это .. Можете ли вы подробнее рассказать об этом регулярном выражении ?? –
Возможно, что вызов функции '' оценщик '' пытается сопоставить всю строку, поэтому задана строка вроде этого: 'Hello123' и регулярное выражение, подобное этому:' [AZ] + ', Swift сопоставляет его с что-то вроде этого: '^ [AZ] + $'. Это означает, что он будет ожидать, что строка * complete * будет точно соответствовать *. Пожалуйста, попробуйте внести изменения, если это сработает, я отправлю ответ с дополнительной информацией. Я не разработчик Swift, поэтому я могу ошибаться, поэтому я разместил это как комментарий. – npinti