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

PHP查找不在正则表达式中的单词,php,regex,Php,Regex,我已经用PHP编写了以下正则表达式/^[A-Za-z0-9-\s]*$/,它允许数字、字母、空格、连字符和下划线。我想显示那些对正则表达式无效的匹配,即“我的名字是Blahblah!!!”应该给我“!!!”输出。使用字符类内的插入符号反转匹配,并删除开始(^)和结束($)字符: /[^A-Za-z0-9-_\s]+/ 使用字符类中的插入符号反转匹配并删除开始(^)和结束($)字符: /[^A-Za-z0-9-_\s]+/ 如果您将所有匹配项替换为空字符串,则将取回不匹配的部分: preg_r

我已经用PHP编写了以下正则表达式
/^[A-Za-z0-9-\s]*$/
,它允许数字、字母、空格、连字符和下划线。我想显示那些对正则表达式无效的匹配,即“我的名字是Blahblah!!!”应该给我“!!!”输出。

使用字符类内的插入符号反转匹配,并删除开始(
^
)和结束(
$
)字符:

/[^A-Za-z0-9-_\s]+/

使用字符类中的插入符号反转匹配并删除开始(
^
)和结束(
$
)字符:

/[^A-Za-z0-9-_\s]+/

如果您将所有匹配项替换为空字符串,则将取回不匹配的部分:

preg_replace('/[A-Za-z0-9-_\s]+/', '', $string)
这适用于任意正则表达式,但对于特定的正则表达式@Andy的解决方案更简单


请注意,我删除了锚点
^
$
,以使此工作正常。

如果您将所有匹配项替换为空字符串,则将取回不匹配的部分:

preg_replace('/[A-Za-z0-9-_\s]+/', '', $string)
这适用于任意正则表达式,但对于特定的正则表达式@Andy的解决方案更简单

请注意,我移除了锚定按钮
^
$
,以实现此功能。

preg\u replace(“/^[A-Za-z0-9-\s]*$/”,“,”我的名字是Blahblah!!!”//输出:“!!

或者,如果你想要他们的所有分组

preg\u split(“/^[A-Za-z0-9-\s]*$/”,“,“我的名字是布拉布拉赫!!!”)
preg\u replace(“/^[A-Za-z0-9-\s]*$/”,“,“我的名字是布拉赫!!!”。//输出:“!!!”

或者,如果你想要他们的所有分组


preg_split(“/^[A-Za-z0-9-\s]*$/”,“,“我的名字是布拉布拉赫!!!”)

您必须将hiphen-放在字符类的开头或结尾或转义,因此您的正则表达式应该是:

/[^-A-Za-z0-9_\s]+/


您必须将hiphen-放在字符类的开头或结尾或转义它,因此您的正则表达式应该是:

/[^-A-Za-z0-9_\s]+/


您应该将
*
更改为
+
。否则,你将浪费大量的时间,用一无所有替换一无所有您应该将
*
更改为
+
。否则,你将浪费大量的时间,用一无所有替换一无所有您希望摆脱这些锚定,并将
*
更改为
+
。OP试图从绳子上拔出火柴,而不是整根绳子。@Alan:是的,开始和结束的锚不见了。感谢您提供有关已编辑的
+
的提示。您希望摆脱这些锚定,并将
*
更改为
+
。OP试图从绳子上拔出火柴,而不是整根绳子。@Alan:是的,开始和结束的锚不见了。感谢您提供有关已编辑的
+
的提示。@jason4:您需要关于此问题的进一步帮助吗?:-)谢谢安迪E,胡萝卜总是对我有用:)@jason4:你需要进一步的帮助来回答这个问题吗?:-)谢谢安迪E,胡萝卜总是对我有用:)