使用系统的或TTTAttributedLabel检索网址

先立个flag,在检测网址链接的过程中,不管是使用 NSDataDetector还是TTTAttributedLabel 做检索网址,其实TTTAttributedLabel也是使用系统的检索网址,先记录一下发现的问题。
  • 如果网址是这样的
    http://www.jianshu.com下雨天的
    检索的结果是不准确的 ,结果检索到的网址是http://www.jianshu.com下雨天的

  • 如果网址是这样的
    http://www.jianshu.com/下雨天的
    检索结果是一样的,不准确

  • 如果网址是这样的去掉了协议头,并且网址和文字中间没有空格,
    www.jianshu.com下雨天的

结果检索到的网址是www.jianshu.com 正确
  • 如果网址和文字中间#有#空格,有没有协议头都一样
    http://www.jianshu.com 下雨天的
结果检索到的网址是http://www.jianshu.com 正确

发现好多第三方,都是采用系统自带的检测网址或者电话号码, 电话号码还好点但是网址总是检测不准。

正确的姿势应该是这样的:
检测网址与电话:
// url链接的规则 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}" ;
下一篇分析下如何利用正则检索网址与电话号码,表情,并且实现富文本的多行与完成显示的切换。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,544评论 19 139
  • 前言:项目中用到检索表情,网址与号码,但是看了TTTAttributeLabel,emojyLabel,奈何都不太...
    雪_晟阅读 2,696评论 0 6
  • 周末看了一部剧叫「我是月亮」,因为不想破坏观看的乐趣,提前没有去看任何的评论和解构。直到第不知道几幕里一场超市里的...
    TheAlchemist阅读 1,148评论 3 2
  • 总有你看不惯的人 也有看不惯你的人 当你看清了一个人而不揭穿 你就懂得了原谅的意义 当你讨厌一个人而不翻脸 你就懂...
    随风飘摇阅读 207评论 0 1
  • 阳光很好,微风不燥,愿每一段感情,都被温柔相待。我知道我是真的爱你。
    忘尘鱼阅读 216评论 0 0

友情链接更多精彩内容