我想過濾通過我的系統傳遞的所有字符串,以便我只發出有效的字符。過濾掉不在一個集合中的字符
以下是允許的。
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,所以我會給你一個Perl化的解決方案:
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;
的字符誰不[^..]
裏面的火柴[
,]
括號並將其替換爲無。置換結束時的g
標誌用於替換多個字符。