Ruby on Rails。用gsub()替换** Bold **和<b> Bold </b>

时间:2016-08-05 13:15:56

标签: jquery ruby-on-rails ruby

在我的text_area/text_field我想让用户选择在某些字词周围添加粗体。 它的工作方式如下:里面有一个**粗体**字。

我使用.gsub('**', '<b>').html_safe它几乎可以工作,但问题是输出不完全正确。

预期输出:内部有一个粗体字样。

我得到的内容:内部有一个粗体字。

HTML:

<p>This has a <b>bold<b> word inside</b></b></p>

如何只使用** <b> </b>

包围的单词

1 个答案:

答案 0 :(得分:2)

您可以捕获匹配并将其传递给以下块

string = "This has a **bold** word inside"

string.gsub(/\*\*(\w+)\*\*/) {"<b>#{$1}</b>"}

#=> "This has a <b>bold</b> word inside"

它也适用于后续比赛

string = "This has a **bold** word inside **bold**"

#=> "This has a <b>bold</b> word inside <b>bold</b>"

修改

如果你想捕获空格,还要将\s添加到正则表达式

string = "This has a ** bold with spaces ** word inside **bold**"

string.gsub(/\*\*([\w\s]+)\*\*/) { "<b>#{$1}</b>" }

#=> "This has a <b> bold with spaces </b> word inside <b>bold</b>"