PHP正则表达式删除除字母,数字,逗号,连字符和下划线之外的所有字符

时间:2015-07-17 13:39:28

标签: php regex

我正在尝试在正则表达式中使用字符串去除除字母,数字,逗号,连字符和下划线之外的所有字符。

这是我目前正在使用的正则表达式:

$clean_input = preg_replace("/[^,-\w]+/", "", $input);

它在我的PHP日志中返回此警告

PHP Warning: preg_replace(): Compilation failed: invalid range in character class at offset 5 in [file]...

以前我使用的是完全相同的正则表达式,但没有逗号字符可以正常工作(除了它仍然明显剥离逗号)。它看起来像这样:

$clean_input = preg_replace("/[^-\w]+/", "", $input);

如果你查看我在在线正则表达式测试工具中制作的this example,它会在我的代码中显示完全相同的设置。它会像我期望的那样返回结果,除了逗号之外的所有内容。

这可能会导致这个逗号字符出现问题。我试图逃避它,但是同样的警告。感谢任何帮助Regex-gods!

1 个答案:

答案 0 :(得分:1)

只需将-放在开头或结尾,因为char类中的连字符有special meaning。而且也不要忘记把逗号放在否定的角色类中。

$clean_input = preg_replace("/[^-\w,]/", "", $input);