我正在尝试在正则表达式中使用字符串去除除字母,数字,逗号,连字符和下划线之外的所有字符。
这是我目前正在使用的正则表达式:
$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!
答案 0 :(得分:1)
只需将-
放在开头或结尾,因为char类中的连字符有special meaning。而且也不要忘记把逗号放在否定的角色类中。
$clean_input = preg_replace("/[^-\w,]/", "", $input);