如何从正则表达式字符中逃避NSString?

时间:2015-06-18 09:17:47

标签: ios objective-c regex

我想检查一个用户输入的NSString是否匹配另一个NSString的结尾部分,预期的结果:

def create
 @cover = Cover.new(cover_params)
    if @cover.save
     respond_to do |format|
      format.html
      format.js
     end
    else
      render "new"
    end
end

以下代码有效:

User input    To match         Result 
----------    -------------    ------
  ing         Good morning      True
  mor         Good morning      False (as mor is not at end of string)
  ing$        Good morning      False (as $ should not be treated as a regex char)

直到用户输入NSString *source; NSString *input; NSString *pattern; NSRange range; source = @"Good morning"; input = @"ing"; pattern = [input stringByAppendingString:@"$"]; range = [source rangeOfString:pattern options:NSRegularExpressionSearch]; NSLog(@"%@, %@, %@", source, pattern, NSStringFromRange(range)); -> Good morning, ing$, {9, 3}

ing$

问题是,如何逃避input = @"ing$"; pattern = [input stringByAppendingString:@"$"]; range = [source rangeOfString:pattern options:NSRegularExpressionSearch]; NSLog(@"%@, %@, %@", source, pattern, NSStringFromRange(range)); -> Good morning, ing$$, {9, 3} ,以免用户输入的字符被视为正则表达式字符?

1 个答案:

答案 0 :(得分:0)

您需要像以下方式一样转义所有正则表达式字符 -

用户输入 - 需要转换ing \ $?