正则表达式,用于验证Objective C中的URL安全字符串

时间:2016-06-22 06:18:51

标签: objective-c regex validation nsurl nsregularexpression

在我的iPhone应用程序中,我通过传递一些参数来构建URL

,如

C:\Users\nikhil.wagh>npm install -g browser-sync
npm ERR! Windows_NT 6.1.7601
npm ERR! argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\
node_modules\\npm\\bin\\npm-cli.js" "install" "-g" "browser-sync"
npm ERR! node v4.4.5
npm ERR! npm  v2.15.5
npm ERR! code ECONNREFUSED
npm ERR! errno ECONNREFUSED
npm ERR! syscall connect

npm ERR! Error: connect ECONNREFUSED 23.235.39.162:443
npm ERR!     at Object.exports._errnoException (util.js:870:11)
npm ERR!     at exports._exceptionWithHostPort (util.js:893:20)
npm ERR!     at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1061:14)
npm ERR!  { [Error: connect ECONNREFUSED 23.235.39.162:443]
npm ERR!   code: 'ECONNREFUSED',
npm ERR!   errno: 'ECONNREFUSED',
npm ERR!   syscall: 'connect',
npm ERR!   address: '23.235.39.162',
npm ERR!   port: 443 }
npm ERR!
npm ERR! If you are behind a proxy, please make sure that the
npm ERR! 'proxy' config is set properly.  See: 'npm help config'

npm ERR! Please include the following file with any support request:
npm ERR!     C:\Users\nikhil.wagh\npm-debug.log

现在我要验证NSURL * url; url = [url URLByAppendingPathComponent:Param1]; 只接受URL安全字符,其他方法是对我同意的URL进行编码,但我需要验证Param1,因为它暴露给用户进行更改,是有没有任何直接的本地API这样做?,或正则表达式是唯一的方法?请提供正则表达式,如果是这样,Thanx提前

1 个答案:

答案 0 :(得分:0)

你可以编码

NSString *encodedString = (__bridge_transfer NSString *)
  CFURLCreateStringByAddingPercentEscapes(
    kCFAllocatorDefault,
    (__bridge CFStringRef)originalString,
    NULL,
    CFSTR(":/?#[]@!$&'()*+,;="),
    kCFStringEncodingUTF8);

if (![encodedString isEqualToString:originalString]) {
    // It contains characters that are probably not legal.
}

或者您可以检查上面列出的字符,但那会有什么乐趣? : - )

NSCharacterSet *charSet = [NSCharacterSet
                             characterSetWithCharactersInString:
                                @":/?#[]@!$&'()*+,;="];
NSRange range = [string rangeOfCharacterFromSet:charSet];

if (range.location != NSNotFound) { ... }