簡體   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