城市名称验证正则表达式 Swift 4
City Name validation Regex Swift 4
我一直在尝试为给定的城市名称实施正则表达式验证。
我的正则表达式应该匹配城市名称,例如:
NY
San Francisco
München
København
Saint-Tropez
St. Lucia
到目前为止,我已经在网上搜索了类似正则表达式的内容,但我一直很难尝试在 swift 中实现它。
这是我想出的正则表达式,它似乎适用于其他语言,但不适用于 swift:
^[a-zA-Z\u0080-\u024F\s\/\-\)\(\`\.\"\']+$
此外,作为附加信息,我想在 UITextField 委托方法中实现它:
shouldChangeCharactersIn
像这样:
override func textField(_ textField: UITextField,
shouldChangeCharactersIn range: NSRange,
replacementString string: String) -> Bool {
return validNameRegex.matches(string)
}
使用 NSRegularExpression 扩展:
extension NSRegularExpression {
convenience init(_ pattern: String) {
do {
try self.init(pattern: pattern)
} catch {
preconditionFailure("Illegal regular expression: \(pattern).")
}
}
func matches(_ string: String) -> Bool {
let range = NSRange(location: 0, length: string.utf16.count)
return firstMatch(in: string, options: [], range: range) != nil
}
}
希望有人能帮助我。提前致谢,新年快乐:)
最后我使用了这个正则表达式:
^[a-zA-Z\u{0080}-\u{024F}\s\/\-\)\(\`\.\\"\']*$
主要问题是转义 unicode 中的“\”字符和 {}
我一直在尝试为给定的城市名称实施正则表达式验证。
我的正则表达式应该匹配城市名称,例如:
NY
San Francisco
München
København
Saint-Tropez
St. Lucia
到目前为止,我已经在网上搜索了类似正则表达式的内容,但我一直很难尝试在 swift 中实现它。
这是我想出的正则表达式,它似乎适用于其他语言,但不适用于 swift:
^[a-zA-Z\u0080-\u024F\s\/\-\)\(\`\.\"\']+$
此外,作为附加信息,我想在 UITextField 委托方法中实现它:
shouldChangeCharactersIn
像这样:
override func textField(_ textField: UITextField,
shouldChangeCharactersIn range: NSRange,
replacementString string: String) -> Bool {
return validNameRegex.matches(string)
}
使用 NSRegularExpression 扩展:
extension NSRegularExpression {
convenience init(_ pattern: String) {
do {
try self.init(pattern: pattern)
} catch {
preconditionFailure("Illegal regular expression: \(pattern).")
}
}
func matches(_ string: String) -> Bool {
let range = NSRange(location: 0, length: string.utf16.count)
return firstMatch(in: string, options: [], range: range) != nil
}
}
希望有人能帮助我。提前致谢,新年快乐:)
最后我使用了这个正则表达式:
^[a-zA-Z\u{0080}-\u{024F}\s\/\-\)\(\`\.\\"\']*$
主要问题是转义 unicode 中的“\”字符和 {}