Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/53.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 正则表达式来选择括号_Ruby On Rails_Ruby_Regex - Fatal编程技术网

Ruby on rails 正则表达式来选择括号

Ruby on rails 正则表达式来选择括号,ruby-on-rails,ruby,regex,Ruby On Rails,Ruby,Regex,使用正则表达式模式清理HTML输出并删除任何特殊字符。我的想法是编写一个正则表达式,列出我想要保留的所有字符,并删除所有其他字符,而不是试图解释模式中的所有特殊字符 我目前的模式: /[^0-9A-Za-z,=": ?'`&;>|<!.\-\/]/ /[^0-9A-Za-z,=“:?”`&>| 它工作得很好,只是删除了我想保留的括号()。在添加到我的模式时,我似乎无法正确地转义它们。这样做的最佳方法是什么?/[^0-9A-Za-z,=“:?”`&;>| /[^0-9A-Za

使用正则表达式模式清理HTML输出并删除任何特殊字符。我的想法是编写一个正则表达式,列出我想要保留的所有字符,并删除所有其他字符,而不是试图解释模式中的所有特殊字符

我目前的模式:

/[^0-9A-Za-z,=": ?'`&;>|<!.\-\/]/
/[^0-9A-Za-z,=“:?”`&>|
它工作得很好,只是删除了我想保留的括号()。在添加到我的模式时,我似乎无法正确地转义它们。这样做的最佳方法是什么?

/[^0-9A-Za-z,=“:?”`&;>|
/[^0-9A-Za-z,=": ?'`&;>|<!.\-\/()]/
在范围块“[]”内,应用不同的转义规则。

/[^0-9A-Za-z,=“:?”`&>|

在范围块“[]”内,应用不同的转义规则。

最好的方法是使用Rails内置的方法。

最好的方法是使用Rails内置的方法。

str.delete(%q{^a-zA-Z1-9,=:“`&>|
str.delete( %q{^a-zA-Z1-9,=:"`&;>|<!.-/ ()'} )
# or with another delimiter (*):
str.delete( %q*^a-zA-Z1-9,=:"`&;>|<!.-/ ()'* )
String.delete将一个或多个字符串作为参数(并像正则表达式一样用“^”对其求反)。使用%q{String}语法,您不必担心转义。

str.delete(%q{^a-zA-Z1-9,=:“`&;”>|

delete将一个或多个字符串作为参数(并用“^”对其求反,就像正则表达式一样)语法您不必担心转义。

对此进行升级投票。这是一种经过良好测试的方法。尝试构建您自己的正则表达式在许多情况下都会起作用,但不是全部。例如,有人可以输入:。删除中间的脚本标记将导致呈现另一个脚本标记。升级投票。这是一种经过良好测试的方法。尝试构建您r own regex在许多情况下都可以工作,但不是全部。例如,有人可以输入:。删除中间的脚本标记将导致另一个脚本标记被呈现。尽管转义
-和
/[^0-9A-Za-z,=“:?”`&>,也可以工作(尽管不需要,如您所述)。让我想知道OP是如何转义的…虽然转义了
-和
/[^0-9A-Za-z,=“:?”`&>|,也会起作用(尽管你提到了,这不是必需的)。让我想知道OP是如何转义的…你仍然需要担心转义,对吗?只是不要转义正斜杠。如果他想要{}在他的表达式中,他需要转义,对吗?@YGomez是的。但是你可以自己选择分隔符。更新答案。你仍然需要担心转义,对吗?只是不能转义正斜杠。如果他想要{}在他的表达式中,他需要避开它,对吗?@YGomez是的。但是你可以自己选择分隔符。更新答案。相关问题:相关问题: