如何检查整个字符串是否可以与正则表达式匹配?在 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
另外,在这里使用带有 MATCHES
的 NSPredicate
是一个替代方案:
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/43676144/