我正在尝试验证仅包含字母,数字和下划线字符的字符串。没有空格,表情符号或其他任何内容。在javascript中,我使用此正则表达式检查
var re = /^\w+$/
但是在Swift中,我不断收到此错误
Incorrect argument label in call (have 'options:', expected 'coder:')
在此行
let regex = try NSRegularExpression(pattern: "/^\w+$/", options: .caseInsensitive)
下面是我在Swift中的代码
let testString = "Hello world"
do
{
let regex = try NSRegularExpression(pattern: "/^\w+$/", options: .caseInsensitive)
if regex.matches(in: testString, options: [], range: NSMakeRange(0, testString.count)).count > 0 {
print("Accept")
}else{
print("Not Accept")
}
}
catch {
}
答案 0 :(得分:1)
该模式必须写为^\\w+$
Javascript中的包装/
只是用于定义正则表达式的Javascript语法,它们不是正则表达式本身的一部分。
由于这是一个字符串,我们还必须转义\
字符(在Javascript中,如果使用字符串定义表达式,则也必须这样做)。
还请注意,这可以更容易地写为:
if testString.range(of: "^\\w+$", options: [.regularExpression, .caseInsensitive]) != nil {
}
(.caseInsensitive
类实际上不需要{\w
,因为它已经包含大写和小写字符)。