从字符串中删除非数字和非字符字符?

Adr*_*ron 7 regex string replace

从字符串中删除所有特殊字符的最佳方法是什么 - 如下所示:

!@#$%^&*(){} |:?"> <,/;'[]\= -

删除了这些字符的项目会相当短,那么在每个项目上使用REGEX或仅使用字符串操作会更好吗?

谢谢

环境== C#/.NET

Pet*_*ton 6

拥有白名单通常比黑名单更好.

正则表达式有一个方便\w,有效地意味着字母数字和下划线(一些变体也添加重音字符(á,é,ô等)到列表,其他人没有).

您可以通过使用\W表示不是字母数字的所有内容来反转它.

因此,用空字符串替换\W将删除所有"特殊"字符.


另外,如果你确实需要一个不同的字符集为字符,你可以用一个否定的字符类:[^abc]会匹配一切,是不是a还是bc,并[^a-z]会匹配一切,是不在范围a,b,c,d...x,y,z

相当于\w[A-Za-z0-9_],因而\W[^A-Za-z0-9_]


Kri*_*ris 3

在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)