我正在为我的应用创建sef url。我刚遇到一个错误,其中我的一个对象包含以下字符:
@#!*
我想要的输出是以下内容,其中保留/未保留之外的任何非法内容都将由下划线代替:
@_!*
我计划使用此正则表达式过滤不良字符:
[^]A-Za-z0-9_.~!*''();:@&=+$,/?#[%-]+
然后通过gsub
'@#!*'.gsub!(/[^]_.~!*''();:@&=+$,/?#[%-]+/, '_')
但是什么也没有退还。这是怎么回事?
答案 0 :(得分:0)
'<@#_!*>'.gsub(/[\[\]^A-Za-z0-9.~!*''();:@&=+$,\/?#%+-]/, '_')
#=> "<_____>"
'[',']'和'/'必须转义,'-'必须在字符类的开头或结尾,'^'不能在字符类的开头(字符类为由外部的[[和']'字符表示)。用''替换''没有意义,因此我没有在字符类中包含该字符。
您是否还希望替换“ <”和“>”?您确定字母和数字是“保留字符”吗?