【问题标题】:How to check if a Regex is valid or not in Objective-C?如何检查正则表达式在 Objective-C 中是否有效?
【发布时间】:2018-03-14 15:00:54
【问题描述】:

我从 API 获得了一个正则表达式。我需要验证正则表达式是否有效。

这是一个示例正则表达式模式:

/^[a-z0-9_-]{6,18}$/

我需要验证这个字符串。

编辑:我用无效的正则表达式 [ 尝试了 initwithpattern,但它没有抛出任何错误。

【问题讨论】:

标签: ios objective-c regex


【解决方案1】:

您应该使用给定的正则表达式模式初始化NSRegularExpression 的实例,并检查NSRegularExpression 是否为NULL

NSString *regexString = @"/^[a-z0-9_-]{6,18}$/";
NSError *error = NULL;
NSRegularExpression *regex = 
    [NSRegularExpression regularExpressionWithPattern:regexString 
                                              options:0 
                                                error:&error];

if (!regex) {
    //regex is invalid
}

【讨论】:

  • 没有。检查 Cocoa 方法失败或成功的正确方法是检查返回值(在本例中为NULL)。比较 stackoverflow.com/questions/29384218/…,它有一个指向 Apple 文档的链接。
  • @MartinR 注意,这是一些有价值的信息。相应地编辑了我的答案。
  • 我用无效的正则表达式尝试了initwithpattern。没有运气。但这是有效的。
  • [ 不是有效的正则表达式。 [ 是一个特殊字符。如果要验证[restOfMyString 类型的字符串,则需要转义[ 执行\[。这是一个关于正则表达式的很棒的备忘录,并在需要时显示要转义的字符:koenig-media.raywenderlich.com/downloads/…
猜你喜欢
  • 2013-04-29
  • 1970-01-01
  • 2011-02-11
  • 2013-07-29
  • 2011-08-12
  • 2013-11-07
  • 1970-01-01
  • 2013-06-19
  • 1970-01-01
相关资源
最近更新 更多