使用regEx NSPredicate,返回错误的结果

时间:2018-05-07 20:06:39

标签: swift regex

我编写了以下正则表达式来验证用户名:

/^[a-zA-Z0-9\\._]+$/

然而,当我尝试使用它时,有些东西会混淆,因为它会给我错误的结果。我尝试的输入与我的SO句柄相同:ilikecode。这是我应用正则表达式的方式:

let regex = "/^[a-zA-Z0-9\\._]+$/"
let usernameTest = NSPredicate(format: "SELF MATCHES %@", regex)
print("username is valid", usernameTest.evaluate(with: username), username)

但是,正则表达式总是返回false。

有人知道这是怎么回事吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

在某些语言中/.../用于分隔正则表达式 模式,将模式与动作和选项分开, 例如

if ($userName =~ m/^[a-zA-Z0-9\\._]+$/i)
Perl中的

NSPredicate(或NSRegularExpression)仅采用一种模式 作为参数,不包括斜杠。

此外,MATCHES运算符隐含了锚点 [c]选项可用于指定不区分大小写的匹配:

let regex = "[a-z0-9\\._]+"
let usernameTest = NSPredicate(format: "SELF MATCHES[c] %@", regex)