<分区>
标签 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/