Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
去除非';t a-zA-Z0-9,uu和-from PHP字符串_Php_Regex_Preg Replace - Fatal编程技术网

去除非';t a-zA-Z0-9,uu和-from PHP字符串

去除非';t a-zA-Z0-9,uu和-from PHP字符串,php,regex,preg-replace,Php,Regex,Preg Replace,我想停止与此正则表达式模式不匹配的所有字符:[a-zA-Z0-9_-] 通常我会这样做: preg_replace("[a-zA-Z0-9_-]", "", $var); 但很明显,这对我想要的东西有着不利的影响。正则表达式中是否有非正则表达式?我怎样才能让它去掉任何与模式不匹配的字符 谢谢。[^a-zA-Z0-9.-]应该为您做这件事。注意括号内的^。字符前面的^character如何: preg_replace( '[^a-zA-Z0-9_-]", "", $var); 在正则表达式的r

我想停止与此正则表达式模式不匹配的所有字符:
[a-zA-Z0-9_-]

通常我会这样做:

preg_replace("[a-zA-Z0-9_-]", "", $var);
但很明显,这对我想要的东西有着不利的影响。正则表达式中是否有非正则表达式?我怎样才能让它去掉任何与模式不匹配的字符


谢谢。

[^a-zA-Z0-9.-]
应该为您做这件事。注意括号内的
^

字符前面的^character如何:

preg_replace( '[^a-zA-Z0-9_-]", "", $var);

在正则表达式的range元素中,如果第一个字符是
^
,则它会反转范围(因此
[^a-zA-Z0-9.-]
匹配任何非字母数字、下划线或破折号的字符)

大多数类型的正则表达式都是这样的

这是:

preg_replace("[a-zA-Z0-9_-]", "", $var);
甚至不会替换这些字符,除非输入字符串正是模式。通过使用
[]
作为分隔符,它们与表达式本身的效果不同。您可以更改分隔符(例如:
/
),或在模式中添加更多括号:

preg_replace("/[a-zA-Z0-9_-]/", "", $var);    // this works
preg_replace("[[a-zA-Z0-9_-]]", "", $var);    // this too
现在,要否定
[]
中的模式,请在开头使用
^

preg_replace("/[^a-zA-Z0-9_-]/", "", $var);
您还可以使用不敏感修饰符
i
来匹配小写(
a-z
)和大写(
a-z
):


好样的!很好的详细回答。
preg_replace("/[^a-z0-9_-]/i", "", $var);   // same as above