gpt4 book ai didi

swift - 名称字段的正则表达式问题 - Swift

转载 作者:搜寻专家 更新时间:2023-10-31 22:38:10 25 4
gpt4 key购买 nike

我正在尝试创建一个可用于名称的正则表达式。

static let nameRegex =  try! NSRegularExpression(pattern: "^[a-zA-Z][A\\p{L}z'\\s]{0,19}$", options: [])

我面临两个问题:

  1. 如果我输入撇号,它不会让我再输入任何内容。
  2. 由于正则表达式中的 [a-zA-Z],我无法删除文本字段中退格键上的第一个字符。

我正在尝试使其限制为 20 个字符,应该以字母开头,并且应该允许特殊字符接受名称,例如:José,名称也带有撇号.

我正在这样检查正则表达式:

extension ViewController: UITextFieldDelegate {
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
let textFieldText = (textField.text! as NSString).replacingCharacters(in: range, with: string)
let filtered: [NSTextCheckingResult] = Constant.Regex.nameRegex.matches(in: textFieldText, options: [], range: NSMakeRange(0, textFieldText.count))
return filtered.count == 1
}
}

任何帮助将不胜感激!

最佳答案

你可以使用

"^(?!\\P{L})[\\p{L}'\\s]{0,20}$"

该模式匹配一​​个与以下模式完全匹配的字符串:

  • ^ - 字符串的开始
  • (?!\\P{L}) - 如果下一个字符不是非字母字符(它需要当前字符右侧的一个字母),则匹配失败的否定前瞻位置或字符串结尾)
  • [\\p{L}'\\s]{0,20} - 0 到 20 个字母,' 或空格
  • $ - 字符串结尾。

关于swift - 名称字段的正则表达式问题 - Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53099161/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com