Adr*_*ron 7 regex string replace
从字符串中删除所有特殊字符的最佳方法是什么 - 如下所示:
!@#$%^&*(){} |:?"> <,/;'[]\= -
删除了这些字符的项目会相当短,那么在每个项目上使用REGEX或仅使用字符串操作会更好吗?
谢谢
环境== C#/.NET
拥有白名单通常比黑名单更好.
正则表达式有一个方便\w
,有效地意味着字母数字和下划线(一些变体也添加重音字符(á,é,ô等)到列表,其他人没有).
您可以通过使用\W
表示不是字母数字的所有内容来反转它.
因此,用空字符串替换\W
将删除所有"特殊"字符.
另外,如果你确实需要一个不同的字符集为字符,你可以用一个否定的字符类:[^abc]
会匹配一切,是不是a
还是b
和c
,并[^a-z]
会匹配一切,是不在范围a,b,c,d...x,y,z
相当于\w
是[A-Za-z0-9_]
,因而\W
是[^A-Za-z0-9_]
在PHP中:
$tests = array(
'hello, world!'
,'this is a test'
,'and so is this'
,'another test with /slashes/ & (parenthesis)'
,'l3375p34k stinks'
);
function strip_non_alphanumerics( $subject )
{
return preg_replace( '/[^a-z0-9]/i', '', $subject );
}
foreach( $tests as $test )
{
printf( "%s\n", strip_non_alphanumerics( $test ) );
}
Run Code Online (Sandbox Code Playgroud)
输出将是:
helloworld
thisisatest
andsoisthis
anothertestwithslashesparenthesis
l3375p34kstinks
Run Code Online (Sandbox Code Playgroud)