gpt4 book ai didi

regex - 确保正则表达式与 Swift 正则表达式匹配整个字符串

转载 作者:行者123 更新时间:2023-11-30 11:44:37 28 4
gpt4 key购买 nike

如何检查整个字符串是否可以与正则表达式匹配?在Java中是方法String.matches(regex)

最佳答案

您需要使用 anchor , ^ (字符串 anchor 的开头)和 $ (字符串 anchor 的结尾),以及 range(of:options:range:locale:) ,传递 .regularExpression选项:

import Foundation

let phoneNumber = "123-456-789"
let result = phoneNumber.range(of: "^\\d{3}-\\d{3}-\\d{3}$", options: .regularExpression) != nil
print(result)

或者,您可以传递一个选项数组,[.regularExpression, .anchored],其中 .anchored 仅将模式锚定在字符串的开头,并且您将能够省略 ^,但仍然需要 $ 锚定在字符串末尾:

let result = phoneNumber.range(of: "\\d{3}-\\d{3}-\\d{3}$", options: [.regularExpression, .anchored]) != nil

查看 online Swift demo

此外,将 NSPredicateMATCHES 一起使用也是一种替代方法:

The left hand expression equals the right hand expression using a regex-style comparison according to ICU v3 (for more details see the ICU User Guide for Regular Expressions).

MATCHES 实际上将正则表达式匹配锚定在字符串的开头和结尾(注意这可能不适用于所有 Swift 3 版本 ):

let pattern = "\\d{3}-\\d{3}-\\d{3}"
let predicate = NSPredicate(format: "self MATCHES [c] %@", pattern)
let result = predicate.evaluate(with: "123-456-789")

关于regex - 确保正则表达式与 Swift 正则表达式匹配整个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48973008/

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