我需要一个正则表达式或者其他字符串来替换一个字符串中除字母数字(a-z
和 0-9
)以外的所有字符。例如,,@#$(@*810
这类字符都应该去掉。有什么好的想法吗?
更新:现在我需要保留句点,即除了a-z, 1-9, .
之外的所有字符都应该去掉。有什么好的想法吗?
我需要一个正则表达式或者其他字符串来替换一个字符串中除字母数字(a-z
和 0-9
)以外的所有字符。例如,,@#$(@*810
这类字符都应该去掉。有什么好的想法吗?
更新:现在我需要保留句点,即除了a-z, 1-9, .
之外的所有字符都应该去掉。有什么好的想法吗?
$string = preg_replace("/[^a-z0-9.]+/i", "", $string);
匹配一个或多个不是a-z 0-9 [大小写不敏感] 或者 "."的字符,并用""替换它们
+
时,它会将"test$!§test"
更改为"test-test"
。如果没有"+"
,它会变成"test---test"
。 - Jörn Berkefeld对于这个问题,我喜欢使用 [^[:alnum:]],因为它可以减少错误的可能性。
preg_replace('/[^[:alnum:]]/', '', "(ABC)-[123]"); // returns 'ABC123'
/[^a-z0-9.]/
尝试:
$string = preg_replace ('/[^a-z0-9]/i', '', $string);
/i代表大小写不敏感(如果你需要的话)。
$clean = preg_replace('/[^\d\w.]+/', '_', $string);