gpt4 book ai didi

regex - Swift 正则表达式名称验证越南名称

转载 作者:行者123 更新时间:2023-11-28 06:15:40 26 4
gpt4 key购买 nike

我使用以下来验证 VietNamese 地址,它在网络上有效 https://regex101.com但是当我在我的 swift 项目中使用时出错了。

extension String {
func isValidAddress() -> Bool {
let RegEx = "([0-9A-ZẮẰẲẴẶĂẤẦẨẪẬÂÁÀÃẢẠĐẾỀỂỄỆÊÉÈẺẼẸÍÌỈĨỊỐỒỔỖỘÔỚỜỞỠỢƠÓÒÕỎỌỨỪỬỮỰƯÚÙỦŨỤÝỲỶỸỴ']+\\s?\\b){2,}"
let Test = NSPredicate(format:"SELF MATCHES %@", RegEx)
return Test.evaluate(with: self.uppercased())
}

我的测试字符串“123/13 Hương lộ 2. Khu phố 2, Quận Bình Tân. Phường Bình Trị Đông A”

当我删除“.”时它是正确的“/”和“,”如:12313 Hương lộ 2 Khu phố 2 Quận Bình Tân。 Phường Bình Trị Đông A

感谢您的帮助。

最佳答案

首先,MATCHESNSPredicate 需要完整的字符串匹配。由于您的模式不匹配标点符号,因此无法匹配 "123/13 Hương lộ 2. Khu phố 2, Quận Bình Tân. Phường Bình Trị Đông A" 字符串。

根据您的要求,使用 range(of:options:range:locale:)使用您当前允许部分匹配的模式:

return self.range(of: "(?i)([0-9A-ZẮẰẲẴẶĂẤẦẨẪẬÂÁÀÃẢẠĐẾỀỂỄỆÊÉÈẺẼẸÍÌỈĨỊỐỒỔỖỘÔỚỜỞỠỢƠÓÒÕỎỌỨỪỬỮỰƯÚÙỦŨỤÝỲỶỸỴ']+\\s?\\b){2,}", options: .regularExpression) != nil

(请注意,(?i) 是告诉正则表达式引擎该模式不区分大小写的较短方式)。或者,将这些模式添加到您希望出现在输入字符串中的正则表达式中。

例如您可以使用 "[\\w\\p{P}]+(?:\\s[\\w\\p{P}]+)+" 模式完全匹配您的字符串,其中\w 匹配任何字母、数字和 _\p{P} 匹配任何标点符号(您可能会想到只使用 \S 而不是匹配任何非空格)。

关于regex - Swift 正则表达式名称验证越南名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45213755/

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