2011-03-22 138 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