包含数学符号的正则表达式有什么问题? (ruby/ Rails)的

text.scan(/\"[\d\w\s\+\-\*\/]*\"/) 

我只是想在引号中找到任何可以包含字母,数字,空格,加号,减号,星号或正斜杠的东西。 在控制台中一切都很棒。 以下各项均适用于浏览器:

 "abc" "123" "x-1" or "x - 1" "x/1" or "x / 1" 

但加号和星号在浏览器中失败(尽管在具有相同正则表达式的控制台中工作正常)。 有没有人有任何想法?

编辑#1:我正在执行快速gsub以向扫描结果添加一些格式。 如果引号中有加号或星号,它们甚至不会被扫描拾取。 粘贴在控制台中的相同代码和文本工作得很好。

编辑#2:我找到了一个更好的方法来构建这个问题而没有多余的细节并得到了答案。 “ 如果结果包含正则表达式特殊字符,为什么我不能对扫描的每个结果执行gsub? ”

原来这个问题与regexp字符串插入( /#{whatever}/ )没有转义特殊字符有关 – 手动转义清除它( /#{Regexp.escape(whatever)}/ )。 请参阅此问题以获取完整示例/说明。

我不知道你的意思是“在浏览器中工作”,但我假设你正试图解析一个URL。 在URL中, +*符号可以分别转换为%2B%2A

试试这个正则表达式:

 /"[(\d\w\s\+\-\*\/|%2B|%2A)]+"/ 

…或在解析之前解码URL。