[英]PHP find words which are not in regex
我在PHP中编写了以下正则表达式/^[A-Za-z0-9-_\\s]*$/
,该表达式允许数字,字母,空格,连字符和下划线。 我想显示对正则表达式无效的那些匹配,即“我的名字是Blahblah !!!”。 应该给我“ !!!” 输出。
使用字符类内的插入符号反转匹配并删除开始( ^
)和结束( $
)字符:
/[^A-Za-z0-9-_\s]+/
http://php-regex.blogspot.com/2008/01/how-to-negate-character-class.html
如果将所有匹配项替换为空字符串,则将返回不匹配的部分:
preg_replace('/[A-Za-z0-9-_\s]+/', '', $string)
这将适用于任意正则表达式,但是对于您的特定正则表达式,@ Andy的解决方案更简单。
注意,我删除了锚点^
和$
来完成这项工作。
preg_replace("/^[A-Za-z0-9-_\\s]*$/","","My Name is Blahblah!!!") // Output: "!!!"
或者,如果您想要它们的所有分组
preg_split("/^[A-Za-z0-9-_\\s]*$/","","My Name is Blahblah!!!")
您必须将hiphen-放在字符类的开头或结尾或将其转义,因此您的正则表达式为:
/[^-A-Za-z0-9_\s]+/
要么
/[^A-Za-z0-9_\s-]+/
要么
/[^A-Za-z0-9\-_\s]+/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.