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