2011-03-22 136 views
7

我想給用戶一個可以輸入文本的文本區域。稍後我會針對不同的輸入匹配該輸入,並在匹配時提取它。用戶輸入+ Ruby +正則表達式?

流量:

  • 用戶輸入與回報的文本到文本區域
  • 文本在文本字段保存在數據庫

然後我用下面的提取:

text_reply = text_reply.sub(/#{user.text_to_extract}/m, '').strip 

問題在於它看起來像新的線條或管道這樣的字符|正在打破它。作爲想要匹配的輸入可以看起來像這樣:

XXXXXX 

XXXXXX 
XXXX & XXXXX 
asdasd: 123312321 | dasasddsadasads 

http://yahoo.com 

建議? Thansk

+0

簡單的字符串替換不會做? – Dogbert 2011-03-22 19:08:52

回答

13

你需要躲避輸入:http://www.ruby-doc.org/core/classes/Regexp.html

見方法escape

Regexp.escape(your_input) 
+0

謝謝,但我怎麼逃脫,當我做inputtext.split(regex_to_use).first? – AnApprentice 2011-03-22 19:38:56

+0

如果您正在處理正則表達式的用戶/字符串輸入,則對該正則表達式執行相同的操作。使用Regex.escape處理任何可能具有正則表達式特殊字符的字符串,這些字符不希望被正則表達式引擎解釋爲這樣。 – 2011-03-22 19:44:46

+0

正確但如何? thx – AnApprentice 2011-03-22 19:45:46