正则表达式:从字符串中删除非专辑字符

时间:2010-05-11 14:38:44

标签: php regex

如何使用PHP删除字符串中不是a-z / A-Z0-9以及_的所有字符? 我尝试了但它没有效果,它返回相同的字符串:

preg_replace('[^a-zA-Z0-9_]', '', 'Testdo123_-:=)§%&');

2 个答案:

答案 0 :(得分:4)

preg_ prefixed functions要求PCRE styled regular expression使用delimiters将正则表达式与optional flags/modifiers分开。

但是你忘记了分隔符了。或者,确切地说:PHP将[]作为分隔符,只留下^a-zA-Z0-9_作为您的实际正则表达式。

所以试试这个(使用/作为分隔符):

preg_replace('/[^a-zA-Z0-9_]/', '', 'Testdo123_-:=)§%&')

答案 1 :(得分:2)

看来你忘了分隔符了:

preg_replace('/\W+/', '', 'Testdo123_-:=)§%&');

\W代表[^a-zA-Z0-9_]