【问题标题】:JavaScript RegExp replace textJavaScript RegExp 替换文本
【发布时间】:2014-10-20 22:40:41
【问题描述】:

我想在一个句子中用<a href=''></a> 包裹一个#hashtag。我创建了一个正则表达式var exp = /#[\w\dğüşçöı]+/gi

这个表达效果很好,但我不能代替#hey dude!字符串与

<a href='hashtag/hey'>#hey</a> dude!

jsFiddle 示例。

【问题讨论】:

  • 那么问题是什么?
  • 将#hey 转换为<a href='hashtag/hey>#hey</a> 形式。

标签: javascript regex


【解决方案1】:

用括号括住您的单词正则表达式,使其成为一个捕获组,替换字符串将识别为 $1:

/#([\w\dğüşçöı]+)/gi

【讨论】:

  • 请注意,这会丢弃 # - 您需要在替换文本中重新包含它
  • 谢谢。我会在 10 分钟内接受您的答复。
  • 现在你没有将它包含在捕获组中,但它已经添加到你的 /hashtag/#url 中,这不是你想要的
  • @JamesThorpe 在 URL 中使用“#”是否安全?
  • 取决于 url 的意图是什么......!我猜你的情况可能不是。这样做是加载位于/hashtag/ 的任何页面,然后尝试导航到该页面上的#hash 锚点,而不仅仅是导航到/hashtag/hash 提供的页面
【解决方案2】:

我在类似的 PHP-Question (https://stackoverflow.com/a/4277114/4161041) 中找到了解决方案:

var raw = "Hello #world! #hey dude!";
var pattern = /#(\w*[a-zA-Z_ğüşçöı]+\w*)/ig;
var replacement = "<a href=\"hashtag/$1\">#$1</a>";
var parsed = raw.replace(pattern, replacement);

http://jsfiddle.net/j3pttLnz/

我希望这会有所帮助。

【讨论】:

  • 那是 PHP。我正在尝试通过使用 JavaScript 来减少服务器的负载。但感谢你找到它。我将使用它来预加载 PHP 的内容。
  • 不,它是 JavaScript。我只是使用了 PHP-Topic 中的表达式。通过单击 jsfiddle-link 尝试我的示例 ;-)
  • 哦,选择性感知。当我阅读 PHP-Question 时,我认为这是一个 PHP 代码:D 没有阅读其余代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-07-27
  • 1970-01-01
  • 1970-01-01
  • 2014-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多