我编写了以下正则表达式来验证用户名:
/^[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。
有人知道这是怎么回事吗?
谢谢!
答案 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)