diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb
index f37026b68805f80351004c46e383d552e4032442..89e6121cf840ed072f8eabe55218355b975c425f 100644
--- a/app/helpers/application_helper.rb
+++ b/app/helpers/application_helper.rb
@@ -186,14 +186,17 @@ module ApplicationHelper
     end
 
     if options[:emphasis]
-      message.gsub!(/([^\\]|^)\*\*(([^*]|([^*]\*[^*]))*[^*\\])\*\*/, '\1<strong>\2</strong>')
-      message.gsub!(/([^\\]|^)__(([^_]|([^_]_[^_]))*[^_\\])__/, '\1<strong>\2</strong>')
-      message.gsub!(/([^\\]|^)\*([^*]*[^\\])\*/, '\1<em>\2</em>')
-      message.gsub!(/([^\\]|^)_([^_]*[^\\])_/, '\1<em>\2</em>')
-      message.gsub!(/([^\\]|^)\*/, '\1')
-      message.gsub!(/([^\\]|^)_/, '\1')
-      message.gsub!("\\*", "*")
-      message.gsub!("\\_", "_")
+      message.gsub!("\\**", "-^doublestar^-")
+      message.gsub!("\\__", "-^doublescore^-")
+      message.gsub!("\\*", "-^star^-")
+      message.gsub!("\\_", "-^score^-")
+      message.gsub!(/(\*\*\*|___)(.+?)\1/m, '<em><strong>\2</strong></em>')
+      message.gsub!(/(\*\*|__)(.+?)\1/m, '<strong>\2</strong>')
+      message.gsub!(/(\*|_)(.+?)\1/m, '<em>\2</em>')
+      message.gsub!("-^doublestar^-", "**")
+      message.gsub!("-^doublescore^-", "__")
+      message.gsub!("-^star^-", "*")
+      message.gsub!("-^score^-", "_")
     end
 
     if options[:youtube]
diff --git a/spec/helpers/application_helper_spec.rb b/spec/helpers/application_helper_spec.rb
index 3682c2dfb40363b0f5439de120401d57850519d5..f093ed46d67406fc234dd4d9fe6d618499a6a04c 100644
--- a/spec/helpers/application_helper_spec.rb
+++ b/spec/helpers/application_helper_spec.rb
@@ -171,7 +171,7 @@ describe ApplicationHelper do
 
     it "should allow escaping" do
       message = '*some text* \\*some text* \\**some text* _some text_ \\_some text_ \\__some text_'
-      markdownify(message).should == "<em>some text</em> *some text<em> *</em>some text <em>some text</em> _some text<em> _</em>some text"
+      markdownify(message).should == "<em>some text</em> *some text<em> **some text</em> <em>some text</em> _some text<em> __some text</em>"
     end
 
     describe "options" do