验证只能包含字母,数字和下划线字符的字符串

时间:2018-08-05 05:14:41

标签: ios swift string

我正在尝试验证仅包含字母,数字和下划线字符的字符串。没有空格,表情符号或其他任何内容。在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 {

}

1 个答案:

答案 0 :(得分:1)

该模式必须写为^\\w+$

Javascript中的包装/只是用于定义正则表达式的Javascript语法,它们不是正则表达式本身的一部分。

由于这是一个字符串,我们还必须转义\字符(在Javascript中,如果使用字符串定义表达式,则也必须这样做)。

还请注意,这可以更容易地写为:

if testString.range(of: "^\\w+$", options: [.regularExpression, .caseInsensitive]) != nil {
}

.caseInsensitive类实际上不需要{\w,因为它已经包含大写和小写字符)。