ios - 正则表达式非常适合主题标签和@usernames 但不适用于 URL

标签 ios objective-c regex

<分区>

我有一个正则表达式,我已经用了一段时间来突出主题标签(例如 #stackoverflow)或用户名/提及(例如 @jeffjohnson ) 而用户正在输入文本。

这是我创建正则表达式的方法:

NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"(#|@)(\\w+)|(#|@)" options:0 error:&error];

我想添加到这个正则表达式模式中,以便它也能突出显示一个 URL。所以我将其更改为以下模式:@"(#|@|http)(\\w+)|(#|@|http)"

当他们键入 http 时,它会正常工作,但当他们键入冒号 (:) 时,冒号不会突出显示。

如果我尝试以与添加 http 相同的方式将 www 添加到正则表达式模式,则会发生同样的事情。 www 将正确突出显示,但只要您键入句点 (.),句点将不会突出显示。

如何向此正则表达式模式添加完整的 URL 检测?

最佳答案

这是因为您的正则表达式正在寻找(英文):散列或 At 符号或 http 紧跟字符类\w (其计算结果为 [a-zA-Z0-9_] 这是一个字符类允许任何字母,无论大小写,任何数字,以及下划线。)这就是你的问题,如果你想突出显示 URL 以及哈希标签和用户名/提及我会推荐这样的正则表达式:

((?:#|@)\w+|http\S+)

如果您愿意,您可以在正则表达式中变得尽可能复杂,但这对大多数情况都适用。

在英语中,此正则表达式正在查找:哈希或 at 符号后跟字符类\w,或 http 后跟一个或多个非空格字符。

关于ios - 正则表达式非常适合主题标签和@usernames 但不适用于 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32211615/

上一篇:ios - 通过单击隐藏 ImageView ?

下一篇:iOS - Facebook SDK v.4.5.1 - 获取用户名和电子邮件

相关文章:

ios - 如何调暗 UITableViewCell

iphone - UIViewController显示两个UITableView

r - 使用R,如何在这种情况下正确使用str_extract?

python - 从文本Python中删除括号中的时间戳

ios - AVAssetExportSession 在输出视频的右侧和底部给我一个绿色边框

ios - 在 iPhone 中的 2 个应用程序之间共享数据

ios - 即使应用程序终止,ABAddressBookRegisterExternalChangeCallback 是否工作

ios - NSHTTPCookie 保存错误

ios - 与 self.view 相关的光标位置

php - preg_match_all能匹配获取的最大字符串长度?