어떤 string이 url인지 판별하는 방법은 여러가지가 있다.
하지만 대부분 http 와 같은 프로토콜을 꼭 포함 시켜야 하거나,
"adf.asdf.asdf" 등의 실제로 사용가능한 주소 형식이 아니더라도 주소로 판별되는 경우가 있다.
그래서 좀더 정확성 높은 방법을 찾다가
정규 표현식을 통한 방법 중에 괜찮은 방법을 찾앗고,
여기에도 문제점이 있어서 수정해서 아래와 같이 사용해 보았다.
NSString *ptn = @"(((http|https)://)?([0-9a-z_-]+\\.)+(aero|asia|biz|cat|com|coop|edu|gov|info|int|jobs|mil|mobi|museum|name|net|org|pro|tel|travel|ac|ad|ae|af| ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc| cd|cf|cg|ch|ci|ck|cl|cm|cn|co|cr|cu|cv|cx|cy|cz|cz|de|dj|dk|dm|do|dz|ec|ee|eg|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga| gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|io|iq|ir|is|it|je|jm| jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mk|ml|mn|mn|mo| mp|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nu|nz|nom|pa|pe|pf|pg|ph|pk|pl|pm|pn| pr|ps|pt|pw|py|qa|re|ra|rs|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj| tk|tl|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw|arpa) ($|((:[0-9]+)?((\\/([~0-9a-zA-Z\\#\\+\\%@\\.\\/_-]+))?(\\?[0-9a-zA-Z\\+\\%@\\/&\\[\\];=_-]+)?)?)))"; NSRange range = [aStr rangeOfString:ptn options:NSRegularExpressionSearch];위 정규 표현식의 중점은 .com .net 과 같은 정의되어 있는 것들만 포함이 되는것을 찾는것이다.
보기 좋게 하기 위해 개행을 하였습니다. 사용할때는 개행을 제거하고 이용하시기 바랍니다.
반응형
'2013 이전 > iOS개발' 카테고리의 다른 글
[iOS 개발] iCloud app 연동 설정 (0) | 2017.02.25 |
---|---|
[iOS 개발] NSArray 역순으로 변환 (0) | 2017.02.25 |
[iPhone 개발] AudioSessionAddPropertyListener 의 해제 (0) | 2017.02.25 |
[iPhone 개발] sqlite query 따옴표 처리 (0) | 2017.02.25 |
[iPhone 개발] audiosession category 의 비밀 (0) | 2017.02.25 |