先立個(gè)flag,在檢測網(wǎng)址鏈接的過程中缴渊,不管是使用 NSDataDetector還是TTTAttributedLabel 做檢索網(wǎng)址,其實(shí)TTTAttributedLabel也是使用系統(tǒng)的檢索網(wǎng)址,先記錄一下發(fā)現(xiàn)的問題模狭。
如果網(wǎng)址是這樣的
http://www.reibang.com下雨天的
檢索的結(jié)果是不準(zhǔn)確的 ,結(jié)果檢索到的網(wǎng)址是http://www.reibang.com下雨天的
如果網(wǎng)址是這樣的
http://www.reibang.com/下雨天的
檢索結(jié)果是一樣的踩衩,不準(zhǔn)確如果網(wǎng)址是這樣的去掉了協(xié)議頭嚼鹉,并且網(wǎng)址和文字中間沒有空格,
www.reibang.com下雨天的
結(jié)果檢索到的網(wǎng)址是www.reibang.com
正確
- 如果網(wǎng)址和文字中間#有#空格驱富,有沒有協(xié)議頭都一樣
http://www.reibang.com 下雨天的
結(jié)果檢索到的網(wǎng)址是http://www.reibang.com
正確
發(fā)現(xiàn)好多第三方锚赤,都是采用系統(tǒng)自帶的檢測網(wǎng)址或者電話號(hào)碼, 電話號(hào)碼還好點(diǎn)但是網(wǎng)址總是檢測不準(zhǔn)褐鸥。
正確的姿勢應(yīng)該是這樣的:
檢測網(wǎng)址與電話:
// url鏈接的規(guī)則 NSString *urlPattern = @"((http[s]{0,1}|ftp)://[a-zA-Z0-9\\.\\-]+\\.([a-zA-Z]{2,4})(:\\d+)?(/[a-zA-Z0-9\\.\\-~!@#$%^&*+?:_/=<>]*)?)|(www.[a-zA-Z0-9\\.\\-]+\\.([a-zA-Z]{2,4})(:\\d+)?(/[a-zA-Z0-9\\.\\-~!@#$%^&*+?:_/=<>]*)?)|(((http[s]{0,1}|ftp)://|)((?:(?:25[0-5]|2[0-4]\\d|((1\\d{2})|([1-9]?\\d)))\\.){3}(?:25[0-5]|2[0-4]\\d|((1\\d{2})|([1-9]?\\d))))(:\\d+)?(/[a-zA-Z0-9\\.\\-~!@#$%^&*+?:_/=<>]*)?)"; NSString *phoneNumber =@"\\d{3}-\\d{8}|\\d{4}-\\d{7}|\\d{11}" ;
下一篇分析下如何利用正則檢索網(wǎng)址與電話號(hào)碼线脚,表情,并且實(shí)現(xiàn)富文本的多行與完成顯示的切換叫榕。