Regex 快速正则表达式

Regex 快速正则表达式,regex,swift,Regex,Swift,我想测试用户输入,看看整个输入是否与下面的正则表达式匹配。我该如何使用斯威夫特 [a-zA-Z]+@[a-zA-Z]+.[a-zA-Z]看起来您正在尝试验证电子邮件地址。试试这个: let test = "someone@somewhere.com" do { let regex = try NSRegularExpression(pattern: "[a-zA-Z0-9]+@[a-zA-Z0-9]+.[a-zA-Z]", options: []) if regex.first

我想测试用户输入,看看整个输入是否与下面的正则表达式匹配。我该如何使用斯威夫特


[a-zA-Z]+@[a-zA-Z]+.[a-zA-Z]

看起来您正在尝试验证电子邮件地址。试试这个:

let test = "someone@somewhere.com"

do {
    let regex = try NSRegularExpression(pattern: "[a-zA-Z0-9]+@[a-zA-Z0-9]+.[a-zA-Z]", options: [])
    if regex.firstMatchInString(test, options: [], range: NSMakeRange(0, test.utf16.count)) != nil {
        print("matched")
    } else {
        print("not matched")
    }
} catch let error as NSError {
    print(error.localizedDescription)
}

NSRegularExpression
仍保留着大量的ObjC遗留内容,因此使用起来相当繁琐

看起来您正在尝试验证电子邮件地址。试试这个:

let test = "someone@somewhere.com"

do {
    let regex = try NSRegularExpression(pattern: "[a-zA-Z0-9]+@[a-zA-Z0-9]+.[a-zA-Z]", options: [])
    if regex.firstMatchInString(test, options: [], range: NSMakeRange(0, test.utf16.count)) != nil {
        print("matched")
    } else {
        print("not matched")
    }
} catch let error as NSError {
    print(error.localizedDescription)
}

NSRegularExpression
仍保留着大量的ObjC遗留内容,因此使用起来相当繁琐

以下是一种在Swift中执行此操作的方法,无需
NSRegularExpression
。您仍然需要
导入Foundation

let email=”foo@bar.com"
如果let=email.range(of:#“[a-zA-Z]+@[a-zA-Z]+.[a-zA-Z]”,
选项:。正则表达式){
打印(“我们有一场比赛!”)
}

以下是一种在Swift中执行此操作的方法,无需使用
NSRegularExpression
。您仍然需要
导入Foundation

let email=”foo@bar.com"
如果let=email.range(of:#“[a-zA-Z]+@[a-zA-Z]+.[a-zA-Z]”,
选项:。正则表达式){
打印(“我们有一场比赛!”)
}


共享您正在尝试的代码片段,同时确保在
文件中编写swift代码。
文件。。。如果你想使用Objective-C,你应该使用一个桥接标题。我只是决定让问题更一般化。可能的重复我不能对此发表评论,因为我没有足够的代表。该解决方案有效,但由于我正在验证整个用户输入,即使只有一小部分用户输入包含它,它也会匹配,即使整件事都是无效的。我在Arumment中尝试过使用其他选项。与您的实际问题(如何在swift中使用正则表达式)无关,但请注意,您的正则表达式在验证电子邮件地址时是非常错误的。对于初学者来说,使用未转义的
匹配任何字符,而不仅仅是一个点。另一个问题是,您不允许向子域发送电子邮件。另一个问题是不允许在
@
前面加点。还有很多其他问题。如果您想使用正则表达式,那么只考虑在验证失败时警告它,而不是错误,因为允许所有有效地址的正确正则表达式非常难以编写。请共享您正在尝试的代码片段,同时确保在 SWIFT 文件中编写银行代码。如果你想使用Objective-C,你应该使用一个桥接标题。我只是决定让问题更一般化。可能的重复我不能对此发表评论,因为我没有足够的代表。该解决方案有效,但由于我正在验证整个用户输入,即使只有一小部分用户输入包含它,它也会匹配,即使整件事都是无效的。我在Arumment中尝试过使用其他选项。与您的实际问题(如何在swift中使用正则表达式)无关,但请注意,您的正则表达式在验证电子邮件地址时是非常错误的。对于初学者来说,使用未转义的
匹配任何字符,而不仅仅是一个点。另一个问题是,您不允许向子域发送电子邮件。另一个问题是不允许在
@
前面加点。还有很多其他问题。如果您想使用正则表达式,则只考虑在验证失败时警告它,而不是错误,因为允许所有有效地址的正确正则表达式是非常难以编写的。谢谢但将选项设置为[]意味着什么?我怎么知道呢?我试着用谷歌搜索它,查看苹果的文档,但我找不到任何信息。
[]
是一个空集<代码>选项:[]
表示“无选项”。它相当于ObjC中的
options:nil
。检查文档。如果
选项
参数符合
选项设置类型
,则可以使用步骤而不是按位
。文档:实际上,如果我试图验证整个用户输入,它将匹配“a@gmail.com,但也将匹配“sometext”a@gmail.com“正则表达式是否需要改进,或者我是否应该使用其他选项?此正则表达式用于验证电子邮件地址是错误的。它不允许数字,用户名的范围是错误的(应该是大写的Z),点应该被转义(现在它意味着任何字符,你真的想匹配一个点)。试试这个:“[a-zA-Z\\d\]+@[a-zA-Z\\d\]+\.[a-zA-Z\\d\]+”(不完美,只是更好。)@pizzamonster谢谢。我一直没意识到我犯了这些错误这很有效。谢谢但将选项设置为[]意味着什么?我怎么知道呢?我试着用谷歌搜索它,查看苹果的文档,但我找不到任何信息。
[]
是一个空集<代码>选项:[]表示“无选项”。它相当于ObjC中的
options:nil
。检查文档。如果
选项
参数符合
选项设置类型
,则可以使用步骤而不是按位
。文档:实际上,如果我试图验证整个用户输入,它将匹配“a@gmail.com,但也将匹配“sometext”a@gmail.com“正则表达式是否需要改进,或者我是否应该使用其他选项?此正则表达式用于验证电子邮件地址是错误的。它不允许数字,用户名的范围是错误的(应该是大写的Z),点应该被转义(现在它意味着任何字符,你真的想匹配一个点)。试试这个:“[a-zA-Z\\d\]+@[a-zA-Z\\d\]+\.[a-zA-Z\\d\]+”(不完美,只是更好。)@pizzamonster谢谢。我一直没意识到我犯了这些错误