Swift 中的正则表达式给出不同的结果

Regex in Swift gives different result

我在 Swift,

中使用这个正则表达式
    let regex = try! NSRegularExpression(pattern: "^[a-zA-Zåçêëèïîìæôöòûùÿáíóúñ]+(?:[-' ][a-zA-Zåçêëèïîìæôöòûùÿáíóúñ]+)*$")
    let range = NSRange(location: 0, length: newValue.utf16.count)
    
    if regex.firstMatch(in: value, options: [], range: range) == nil {
        print("Not passed")
    } { 
        print("Passed") 
    }

但它给出的结果与网站 https://regex101.com/r/EXWsK1/2 不同, 我在这里做错了什么?

在我的 swift 代码中,它应该像网站上的示例一样接受 Le'brahm、O'Niel 等撇号字符,但它不接受。

您需要将单引号 ‘’ 添加到模式中:

pattern: "^[a-zA-Zåçêëèïîìæôöòûùÿáíóúñ]+(?:[-'‘’ ][a-zA-Zåçêëèïîìæôöòûùÿáíóúñ]+)*$"

直引号默认替换为弯引号。