我有一个文本字段,我需要找到以#hashtag开头的每个关键字(可以有多个关键字),并将其替换为已存在的对象的链接(如果存在)。
所以我必须在主题标签上做find
,如果存在则用链接替换它。
#goofy
如果存在,则应替换为http://www.test.com/i/goofy
。
RegEx:/(?:\s|^)(?:#(?!(?:\d+|\w+?_|_\w+?)(?:\s|$)))(\w+)(?=\s|$)/i
。
最好的方法是什么?
我坚持如何用链接替换我找到的每个关键字实例。
答案 0 :(得分:1)
您可以使用String#gsub
:
re = /(?:\s|^)(?:#(?!(?:\d+|\w+?_|_\w+?)(?:\s|$)))(\w+)(?=\s|$)/i
"#goofy".gsub(re, 'http://www.test.com/i/\1')
#=> "http://www.test.com/i/goofy"
\1
指的是第一个捕获组。
但是你的正则表达式似乎有问题:
"123 #goofy".gsub(re, 'http://www.test.com/i/\1')
#=> "123http://www.test.com/i/goofy"
# ^ no whitespace