我正在尝试过滤通过系统传递的所有字符串,以便仅发送有效字符。
以下是允许的。
a-z
A-Z
"-" (hypen, 0x24)
" " (space, 0x20)
"’" (single quote, 0x27)
"~" (tilde, 0x7E)
现在我可以想出一个在这个集合中搜索字符的正则表达式。但我需要的是一个与该集合中的字符匹配的正则表达式,因此我可以用任何内容替换它们。
有任何想法吗?
我正在尝试过滤通过系统传递的所有字符串,以便仅发送有效字符。
以下是允许的。
a-z
A-Z
"-" (hypen, 0x24)
" " (space, 0x20)
"’" (single quote, 0x27)
"~" (tilde, 0x7E)
现在我可以想出一个在这个集合中搜索字符的正则表达式。但我需要的是一个与该集合中的字符匹配的正则表达式,因此我可以用任何内容替换它们。
有任何想法吗?
这是您可以做到的一种方法。你标记了 Perl,所以我会给你一个 perlish 解决方案:
my $string = q{That is a ~ v%^&*()ery co$ol ' but not 4 realistic T3st};
print $string . "\n";
$string =~ s{[^-a-zA-Z '~]}{}g;
print $string . "\n";
印刷:
That is a ~ v%^&*()ery co$ol ' but not 4 realistic T3st
That is a ~ very cool ' but not realistic Tst
说清楚:
$string =~ s{[^-a-zA-Z '~]}{}g;
匹配不在,括号[^..]
内的字符并将它们替换为空。替换结束时的标志用于替换超过 1 个字符。[
]
g