繁体   English   中英

PHP查找不在正则表达式中的单词

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM